Java线程池的四种实现方法及实现原理及分析

Java线程池的四种实现方法及实现原理及分析

一、为什么要用线程池

线程池就是创建多个线程并且进行管理的容器,线程池是个容器,可以创建线程和管理线程,并且给线程分配任务。

比如在一个项目中 ,全都是用new Thread的方式去启动线程,那么创建好Thread1,而1在运行的时,创建了Thread2,等等,创建了10个线程的时候,1,2,3都执行完毕了但是没有被销毁,就可能导致无限制的新建线程,相互竞争,占用过多的系统资源,导致死锁及OOM。而且这些线程缺乏统一的管理功能,也缺乏定期执行,定时执行,线程中断的功能。

这时可以用线程池,主要好处:重用已经存在的线程,减少了线程的创建和销毁的开销;可有效控制最大并发的线程数,提高了系统资源的使用率避免很多竞争,避免了oom死锁;可以提供定时和定期的执行方式,单线程,并发数量的控制等功能。线程池可以使得对线程的管理更加方便,并且对高并发的控制尽在掌握。

二、四种不同Java线程池的功能及分析

线程池都继承了ExecutorService的接口,所以他们都具有ExecutorService的生命周期方法:运行、关闭、终止

因为继承了ExecutorService接口,所以它在被创建的时候就是处于运行状态,当线程没有任务执行时,就会进入关闭状态,只有调用了shutdown()的时候才是正式的终止了这个线程池。

java通过Executors工厂类提供我们的线程池一共有4种:

fixedThreadPool() //启动固定线程数的线程池

CachedThreadPool() //按需分配的线程池

ScheduledThreadPoolExecutor()//定时,定期执行任务的线程池

ThreadPoolExecutor()//指定线程数的线程池。
 

三、实现过程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值