1 架构说明
- Java中线程池是通过Executor框架实现的,该框架中用到了Executor,
Executors
,ExecutorService,ThreadPoolExecutor
这几个类。
- 注意对比:数组:Array–>Arrays;集合类:Collection–>Collections; 线程池:Executor–>Executors。加个
s
表示工具类。
2 线程池的实现
- Executors.newFixedThreadPool(int n); 创建一个
定长
的线程池,使用的阻塞队列是LinkedBlockingQueue
。用来执行长期的任务,性能好很多。
- Executors.newSingleThreadExecutor();创建一个
单线程化
的线程池,使用的阻塞队列是LinkedBlockingQueue
。用于一个任务一个任务执行的场景。
- Executors.newCachedThreadPool();创建一个
可缓存
的线程池,使用的阻塞队列是SynchronousQueue
。用于执行很多短期异步的小程序或者负载较轻的服务器。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MyThreadPoolDemo {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newCachedThreadPool();
try {
for (int i = 1; i <= 10; i++) {
threadPool.execute(() -> {
System.out.println(Thread.