线程池是管理线程的一套解决方案,主要工作:
1.控制线程数量
线程过多会消耗大量的内存,有可能引起内存溢出崩溃。并且线程数量过多会导致CPU卡顿
2.重用线程
线程不应当与任务的生命周期一致,重复使用线程可以减少线程调度器的不必要开销
public class ThreadPoolDemo {
public static void main(String[] args) {
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(r);//将任务交给线程池
System.out.println("指派一个任务交给线程池...");
}
threadPool.shutdownNow();
System.out.println("停止线程池...");
}
}