线程池

2017-04-24  本文已影响0人  Cajesse佳泽

此文参考博客编写.

1.什么是线程池

线程池就是若干个线程的集合,这些线程被池化了,能够执行多个任务.而并非只为执行一次任务而创建,也并非执行完任务就销毁.

2.线程池的实现原理

上述提到的若干个线程,我们称之为工作线程. 一个线程池中通常有个定量的阻塞队列queue与其配合使用,当外部向一个线程池提交一个任务时,线程池会将这个任务放置到queue中,而线程池中的工作线程会不断向queue中取出任务执行.执行完之后如果发现queue不为空,则继续取,如果queue已经为空, 工作线程们进入waiting状态. 待queue再次不会空,这些线程会被唤醒.从而进行下一次任务的执行.大概原理就是这样

3.线程池如何使用

看看JDK为我们提供的ThreadPoolExecutor.
我们可通过ThreadPoolExecutor来创建一个线程池.再调用其execute方法,传入我们的任务Runable对象即可.

  1. 参数
  1. 工作流程


    流程图

    看完上述对参数比较口语化的描述.我们用他们来模拟一个ThreadPoolExecutor当执行execute方法是怎么干的
    首先我们需要用一个Set<Worker>表示当前我们持有的工作线程.

放入Queue
  1. ThreadPoolExecutor状态
状态流转图

4.线程池的意义

上一篇 下一篇

猜你喜欢

热点阅读