package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
- 线程池
- 线程池主要解决两个问题:
- 1.控制线程的数量
- 线程过多会导致内存消耗大,CPU过度切换导致的并发性能差等问题
- 2.重用线程
- 线程不应当随着任务的生命周期一致,避免频繁的创建和销毁线程可以降低
- 启动带来的不必要开销
- @author ChenYi
- @date 2019.09.18
*/
public class ThreadPoolDemo {
public static void main(String[] args) {
//创建一个固定大小的线程池(这里线程数为2条)
ExecutorService threadPool=Executors.newFixedThreadPool(2);
for (int i = 0; i < 5; i++) {
Runnable r=new Runnable() {
public void run() {
try {
Thread t=Thread.currentThread();
System.out.println(t.getName()+":正在执行任务");
Thread.sleep(5000);
System.out.println(t.getName()+“运行任务结束”);
} catch (Exception e) {
e.printStackTrace();
}
}
};
//把任务给了线程池处理
threadPool.execute®;
System.out.println(“指派了一个任务给线程池”);
}
threadPool.shutdown();
//threadPool.shutdownNow();立刻结束线程池
System.out.println(“线程池关闭了”);
}
}