有3种不同的线程池,newFixedThreadPool固定线程数量的,newCachedThreadPool可变线程数量的,newSingleThreadExecutor单一线程
下面看代码
package com.lyj;
/**
* 线程池: 固定大小的, 可变数量的, 单一线程的
*/
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolDemo {
/**
* @param args
*/
public static void main(String[] args) {
// 固定大小的线程池
//ExecutorService threadPool = Executors.newFixedThreadPool(2);
// 根据需要创建线程数量
//ExecutorService threadPool = Executors.newCachedThreadPool();
// 始终有一个线程在运行(线程死后会重新启动一个新线程,相当于一个替补)
ExecutorService threadPool = Executors.newSingleThreadExecutor();
//创建10个任务
for (int i = 1; i <= 10; i++) {
final int task = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
for (int i = 0; i <= 20; i++) {
System.out.println("当前线程名: " + Thread.currentThread().getName() + " 任务 : " + task + " 循环: " + i);
}
System.out.println("任务 " + task + " 完成了");
}
});
}
System.out.println("10个任务都已经提交");
// 任务结束后关闭线程池
threadPool.shutdown();
//立刻关闭线程
// threadPool.shutdownNow();
}
}