1、首先,通过Executors执行工具,创建newFixedThreadPool线程池的实例。其中,在创建实例的时候,指定并行运行的最大线程数为5。
2、通过循环方法调用线程池excute方法,执行同一个线程方法10次。用于模拟线程newFixedThreadPool线程池获取线程的过程。
3、在线程方法中,直接输出线程名,用于控制台输出,从而可以比较直观的查看运行的线程。
4、由于线程方法中只是输出线程名,运行耗时非常小,不易看出该线程池的特性,这里可以直接让线程休眠一段时间,模拟程序运行所需要的时间。
5、运行main方法,可以发现,在刚运行程序时,会立即打印出5个线程的输出。
6、过了休眠时间后,再次打印出5个线程。这里就可以看到,newFixedThreadPool线程池按照我们设置的并发量进行了控制。
7、改变并发参数为6,同样可以看到此时输出为6个线程。
8、观察newFixedThreadPool源码,可以看到此时keepAliveTime为0,线程不会进行缓存,只要空闲就会被回收。
9、注意使用该线程池一定要在使用完成后将线程池关闭,否则会一直挂起占据资源。