常用的七种线程池

常见的七种线程池:

(1)newSingleThreadExecutor():单个线程的线程池,即线程池中每次只有一个线程工作保证所有任务按照指定顺序执行(FIFO,LIFO,优先级),单线程串行执行任务。

(2)newFixedThreadPool():创建一个定长的线程池,每提交一个任务就占用一个线程。直到线程池的最大数量,然后后面进入队列的就得在空出线程之前一直等待。

(3)newCacheThreadPool():可缓存线程池(推荐使用),当线程池大小超过了处理任务所需的线程数时,那么就回收部分线程(一般是60S内未执行)。当任务需要的线程数超过了线程池中已有的线程数时,又会创建一定量的线程来满足任务使用的需求。此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。

(4)newScheduleThreadPool():创建一个定长的线程池,支持定时和周期性任务执行。

(5)newSingleThreadScheduledExcutor:创建一个单例线程池,定期或延时执行任务。

(6)newWorkStealingPool:创建持有足够线程的线程池来支持给定的并行级别,并通过使用多个队列,减少竞争,它需要穿一个并行级别的参数,如果不传,则被设定为默认的CPU数量。

 (7) ForkJoinPool:支持大任务分解成小任务的线程池,这是Java8新增线程池,通常配合ForkJoinTask接口的子类RecursiveAction或RecursiveTask使用。

 

java线程池 作用:

限制系统中执行线程的数量

       根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排 队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池 中有等待的工作线程,就可以开始运行了;否则进入等待队列。

好处:1)减少创建,销毁线程的次数,每个线程可以被重复利用

           2)可以根据系统的承受能力,调整线程池中工作线程的数量,防止消耗过多内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值