- 线程池
- 线程池是线程的一个管理机制,主要解决两个问题
- 线程数量不控制可能会因为同时并发的线程过多,出现CPU过度切换,导致并发性能降低(卡顿)
- 线程如果不重用则生命周期与任务一致,当任务很多时,可能会出现线程频繁的创建和销毁,徒增无意义的开销
public static void main(String[] args) {
//创建一个固定大小的线程池,容量为2条线程,相当于工程师造了2量公交车给总站
ExecutorService threadPool = Executors.newFixedThreadPool(2);
for(int i=0;i<5;i++){ //相当于有五个乘客 执行顺序就是 2 2 1,线程重用了
Runnable run = new Runnable() {
@Override
public void run() {
Thread t= Thread.currentThread(); //
System.out.println(t+"正在执行任务");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(t+"执行任务完毕");
}
};
threadPool.execute(run);
System.out.println("交给了线程池一个任务");
}
threadPool.shutdown();//现有的任务执行完,关闭
//threadPool.shutdownNow();//立刻关闭,不管有没有任务
}