《java高并发编程详解》第2集:自定义实现线程池

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方法。

简易的例子让我们能够更好的理解线程池的实现原理,毕竟纸上得来终觉浅,绝知此事要躬亲。希望对大家有所帮助

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值