自己实现一个简单的Java线程池
线程池技术大家应该都不陌生,应用在很多方面,数据库连接池,服务器中的请求连接池等,都用到了池化技术。线程池的一个好处就是减少了创建和销毁线程的额外开销,再就是可以管理线程。
Java的JDK中自带线程池的实现,功能满足了绝大数的需求,为了直观的感受下线程池的实现,自己实现一个简单的线程池。
1、定义一个接口TPool,需要添加任务的方法和关闭线程池的方法。
线程池接口
2、线程池的实现类,实现思路:定义一个队列,存储任务列表,定义一个集合存储工作线程,定义布尔变量running作为线程池的执行状态,false是关闭所有线程,默认是true。初始化的时候创建指定数量的线程并放入集合中,每个工作线程会从队列中获取任务并执行。每次添加任务只放到队列中,等待线程获取。
TPoolImpl线程池
3、做个测试,验证线程池能否使用,
测试线程池
输出结果如下,说明线程池基本能用,细节待优化。
测试任务:1
测试任务:2
测试任务:4
测试任务:3
测试任务:6
测试任务:7
测试任务:5
测试任务:8
测试任务:9
测试任务:11
测试任务:10
测试任务:12
测试任务:13
测试任务:14
测试任务:15
线程池很多细节都没有实现,只是演示线程池的实现原理。
领取专属 10元无门槛券
私享最新 技术干货