线程池
线程池主要有两个作用:
1:重用线程
2:控制线程数量
当我们的应用需要创建大量线程或者发现线程会频繁的创建和销毁时就应当考虑使用线程池来维护线程。
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(2);
for(int i=0;i<5;i++) {
Runnable runn = new Runnable() {
public void run() {
Thread t = Thread.currentThread();
try {
System.out.println(t+":正在运行任务");
Thread.sleep(5000);
System.out.println(t+":运行任务完毕");
}catch(Exception e) {
System.out.println("线程被中断了!");
}
}
};
threadPool.execute(runn);
System.out.println("指派了一个任务交给线程池");
}
threadPool.shutdown();
System.out.println("停止线程池了!");
}
运行结果:
指派了一个任务交给线程池
指派了一个任务交给线程池
指派了一个任务交给线程池
指派了一个任务交给线程池
指派了一个任务交给线程池
Thread[pool-1-thread-1,5,main]:正在运行任务
Thread[pool-1-thread-2,5,main]:正在运行任务
停止线程池了!
Thread[pool-1-thread-1,5,main]:运行任务完毕
Thread[pool-1-thread-2,5,main]:运行任务完毕
Thread[pool-1-thread-2,5,main]:正在运行任务
Thread[pool-1-thread-1,5,main]:正在运行任务
Thread[pool-1-thread-1,5,main]:运行任务完毕
Thread[pool-1-thread-1,5,main]:正在运行任务
Thread[pool-1-thread-2,5,main]:运行任务完毕
Thread[pool-1-thread-1,5,main]:运行任务完毕