记录大佬写的 - 线程池Demo
一、原理
通过使用ExecutorService和Executor两个类里面的Executors去新建一个newFixedThreadPool。然后再用submit方法提交业务代码到线程池。
二、 解释
举个生动的例子:时间管理
类比于现在有一个烧水、洗澡、刷牙、洗脸、玩游戏、睡觉的流程。
a.先声明一个线程池,让改程序能够满足`多任务同时进行的能力`即拥有两只手。
b.然后在它洗澡的时候让这个任务申请使用 `另外一只手`,让另外这只手去处理 `刷牙` 的操作。
三、代码
本处仅展示executService类的写法:
public class TestPool{
public static void main(String[] args) throws InterruptedException {
System.out.println("申请打开线程池");
ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("线程1开始");
// 线程内容
try {
System.out.println("线程2开始");
for (int i = 0; i < 5; i++) {
Thread.sleep(5000);
System.out.println("2."+i);
}
System.out.println("线程2结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程1结束");
}
});
System.out.println("线程3开始");
for (int i = 0; i < 5; i++) {
Thread.sleep(2000);
System.out.println(i);
}
System.out.println("线程3结束");
System.out.println("线程4开始");
executorService.submit(new Runnable() {
@Override
public void run() {
// 线程内容
try {
System.out.println("线程5开始");
for (int i = 0; i < 5; i++) {
Thread.sleep(3000);
System.out.println("4."+i);
}
System.out.println("线程5结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
System.out.println("线程4结束");
System.out.println("关闭线程池");
executorService.shutdown();
}
}

浙公网安备 33010602011771号