newFixedThreadPool是ExecuteService接口提供的另外一个线程池类型,该类型能够创建一个定长的线程池,即控制最大线程并发数,超过这个并发数的线程将在队列中等待。以下介绍该线程池的用法。
工具/原料
1
java
2
jdk1.8,IntelliJ IDEA
方法/步骤
1
首先,通过Executors执行工具,创建newFixedThreadPool线程池的实例。其中,在创建实例的时候,指定并行运行的最大线程数为5。
2
通过循环方法调用线程池excute方法,执行同一个线程方法10次。用于模拟线程newFixedThreadPool线程池获取线程的过程。
3
在线程方法中,直接输出线程名,用于控制台输出,从而可以比较直观的查看运行的线程。
4
由于线程方法中只是输出线程名,运行耗时非常小,不易看出该线程池的特性,这里可以直接让线程休眠一段时间,模拟程序运行所需要的时间。
5
运行main方法,可以发现,在刚运行程序时,会立即打印出5个线程的输出。
6
过了休眠时间后,再次打印出5个线程。这里就可以看到,newFixedThreadPool线程池按照我们设置的并发量进行了控制。
7
改变并发参数为6,同样可以看到此时输出为6个线程。
8
观察newFixedThreadPool源码,可以看到此时keepAliveTime为0,线程不会进行缓存,只要空闲就会被回收。
注意事项
newFixedThreadPool指定并发数量,需要根据系统资源进行设置。