技术分享-线程池介绍及应用

为什么
怎么用
用在哪

1、为什么要使用线程池?
1)方便线程并发数的管控,线程池能有效管控线程,统一分配、调优,提供资源使用率。(包药机)
2)更强大的功能,线程池提供了定时、定期以及可控线程数等功能的线程池,使用方便简单。(发药机)
3)降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗。
4)提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行。

2、怎么使用线程池?
2.1、从 JDK 5 开始,Java 提供了自己的线程池,线程池就是一个线程的容器,每次只执行额定数量的线程。java.util.concurrent包中提供了ThreadPoolExecutor类来管理线程。
2.2、Executors类是java.util.concurrent提供的一个创建线程池的工厂类,使用该类可以方便的创建线程池,此类提供的几种方法,支持创建四种类型的线程池,分别是:
2.2.1、newSingleThreadExecutor
1)创建一个单线程线程池。
2)当多个任务提交到单线程线程池中,线程池将逐个去进行执行。

 

 

2.2.2、newCachedThreadPool
1)创建一个可缓存线程池。
2)线程池中的线程空闲时间超过60s才会自动回收该线程。
3)任务超过线程池的线程数则创建新线程。
4)线程池的大小上限为Integer.MAX_VALUE。

 

 

2.2.3、newFixedThreadPool
1)创建一个定长线程池。
2)在有可用线程之前,附加任务将在队列中等待。

 

 

2.2.4、newScheduledThreadPool
1)创建一个支持定时及周期性任务线程池。
2)线程池初始大小由入参指定。
3)线程池的大小上限为Integer.MAX_VALUE。

 

 


3、用在哪?
1)同步包药机。

 

 

 

2)时间矫正。

 

 

3)发送发药任务。

 

 

 

posted @ 2020-06-11 17:06  Soujer  阅读(98)  评论(0)    收藏  举报