ThreadPoolExecutor类
java.util.concurrent.ThreadPoolExecutor类是管理工人线程的类。ThreadPoolExecutor可以轻松地实现Worker Thread模式。ThreadPoolExecutor类可以对线程池(保存和管理工人线程的场所)进行以下设置。
- 指定线程池的大小
- 指定提前创建线程还是按需创建线程
- 指定创建线程的工厂(java.util.concurrent.ThreadFactory)
- 指定多长时间终止不需要的线程
- 指定传递要执行的工作时的排队方式
- 指定拒绝工作的方式
- 指定执行工作前和执行工作后的处理
通过java.util.concurrent包创建线程池
java.util.concurrent.Executors类是用于创建线程池的工具类。
Executors.newFixedThreadPool方法
Executors.newFixedThreadPool方法会创建一个线程池,该线程池会创建个数由参数指定的工人线程,而且创建出的线程会被重复利用。如果在这个方法的参数中加上ThreadFactory对象,则线程池会使用该ThreadFactory来创建新的工人线程。
Executors.newCachedThreadPool方法
Executors.newCachedThreadPool方法会创建一个线程池,该线程池可以根据需要自动创建工人线程,而且工人线程会被重复利用。没有工作的工人线程会在缓存约60秒后自动终止。如果向这个方法的参数中传入ThreadFactory对象,则线程池会使用这个ThreadFactory来创建新的工人线程。
Executors.newScheduledThreadPool方法
Executors.newScheduledThreadPool方法会创建一个线程池,该线程池可以在一定时间后执行请求或是反复执行请求。即使在没有请求时也需要保存的线程数量可以通过参数指定。此外,如果在这个方法的参数中加上ThreadFactory对象,则线程池会使用这个ThreadFactory来创建新的工人线程。
Main.java
1 | import java.util.concurrent.Executors; |
ClientThread.java
1 | import java.util.Random; |
Request.java
1 | import java.util.Random; |
运行结果
1 | pool-1-thread-1 executes [ Request from Chris No.0 ] |