《java高并发编程详解》第二集:线程池demo
Executor是我们在编程中经常用到的核心接口,属于java.util.concurrent包的核心接口之一,主要的任务就是void execut(Runnable command)方法
而ThreadPoolExecutor是我们最经常接触的线程池实力,继承关系如下
线程池的最主要的任务是
1:维持多个工作线程,
2:接受新的Runnable任务,
3:执行Runnable任务
核心设计思想是维持多个工作线程不断轮询获取Runnable任务,并执行。
为了实现上面的3个任务,线程池中较为重要的几个参数:
int corePoolSize:核心工作线程数,
int maximumPoolSize:最大工作线程数
HashSet<Worker> workers:工作线程的集合
ThreadFactory threadFactory:线程工厂
RejectedExecutionHandler handler:拒绝执行器
BlockingQueue<Runnable> workQueue:任务队列
内部类:class Worker
参考ThreadPoolExecutor的代码,及上面三个核心职责,我自己写了一个线程池demo(没有严格并发)
git地址:https://github.com/BincentLou/springboot,文件路径为example/web/src/test/java/com/david/example/threadtest/
DemoThreadPool类是简易版的ThreadPoolExecutor
DemoThreadFactory类是简易版的ThreadFactory
ThreadPoolTest是测试类的启动类,直接运行main方法。
简易的例子让我们能够更好的理解线程池的实现原理,毕竟纸上得来终觉浅,绝知此事要躬亲。希望对大家有所帮助