Java通过Executors提供四种线程池的企业技术,你都会了吗?

Java通过Executors提供四种线程池,各自为:

newCachedThreadPool建立1个可缓存线程池,假如线程池总长度超出解决需要,可灵巧回收空余线程,若没法回收,则新创建线程。

newFixedThreadPool 建立1个定长线程池,可控制线程最多并发数,超过的线程会在列队中等候。

newScheduledThreadPool 建立1个定长线程池,支持自动及周期性任务实行。

newSingleThreadExecutor 建立1个单线程化的线程池,它总是用唯一的工作线程来执行任务,确保全部任务依照指定顺序(FIFO, LIFO, 优先级)执行。

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

(1) newCachedThreadPool

建立1个可缓存线程池,假如线程池总长度超出解决需要,可灵巧回收空余线程,若没法回收,则新创建线程。示例代码如下:

线程池为无穷大,当实行下一个任务时第一位任务已经成功,会复用实行第一个任务的线程,而无需每一次新创建线程。

(2) newFixedThreadPool

建立1个定长线程池,可控制线程最多并发数,超过的线程会在列队中等候。示例代码如下:

由于线程池大小为3,每一任务输出index后sleep 2秒,因此每两秒打印三个数字。

定长线程池的大小最好是按照系统资源进行设定。如Runtime.getRuntime().availableProcessors()

(3) newScheduledThreadPool

建立1个定长线程池,支持定时及周期性任务执行。延迟执行示例代码如下图所示:

表示延迟3秒执行。

定期实行示例代码如下:

表示延迟一秒后每三秒实行一次。

(4) newSingleThreadExecutor

建立1个单线程化的线程池,它只会用唯一的工作线程来实行任务,确保全部任务依照特定先后顺序(FIFO, LIFO, 优先级)执行。示例代码如下:

结果依次输出,等于顺序执行每个任务。

你能使用JDK内置的监控专用工具来监控我们建立的线程总数,运作1个不停止的线程,建立特定量的线程,来观测:

工具目录:C:\Program Files\Java\jdk1.6.0_06\bin\jconsole.exe

运作程序做稍稍改动:

效果如下:

选择我们运行的程序:

监控运行状态

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

猜你喜欢

转载自blog.csdn.net/weixin_42784331/article/details/86498951