代码拉取完成,页面将自动刷新
package threadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 线程池Demo
* <p>
* Author: 起舞的日子
* Date:2026/1/21 15:33
*/
public class ExecutorsDemo {
public static void main(String[] args) {
testExecutors();
}
public static void testExecutors() {
// 1. 固定线程池 核心线程数=最大线程数,无空闲线程超时
//场景: 任务量稳定,避免线程频繁创建销毁
ExecutorService fixedPool = Executors.newFixedThreadPool(3); //3个固定工人
// 2. 缓存线程池
//场景: 任务量大但是耗时短(比如临时计算、异步回调)
ExecutorService cachedPool = Executors.newCachedThreadPool(); //无限临时工,60s没活辞退
//3. 单线程线程池 核心线程数=最大线程数=1,任务串行执行
//场景: 需要任务按顺序执行(比如日志写入、数据库批量操作)
ExecutorService singlePool = Executors.newSingleThreadExecutor(); //1个专属工人
//提交任务 2种方式 方式1:Runnable 无返回值; 方式2:Callable 有返回值
//方式1: Runnable
for (int i = 1; i <= 5; i++) {
int taskNum = i;
System.out.println("主线程:创建第" + i + " 个任务");
fixedPool.execute(() -> {
System.out.println("线程池中的异步任务执行【开始】");
System.out.println("线程 " + Thread.currentThread().getName() + " 处理任务" + taskNum);
try {
Thread.sleep(2000);//模拟任务耗时
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程池中的异步任务执行【完毕】");
});
System.out.println("主线程循环到:" + taskNum);
}
//方式2: Callable 有返回值,用Future获取
/*
Future<Integer> future = fixedPool.submit(() -> {
return 1 + 1;
});
try {
System.out.println("任务结果:"+future.get());//阻塞获取任务结果
} catch (Exception e) {
e.printStackTrace();
}
*/
//关闭线程池(必须关! 否则JVM不会退出)
fixedPool.shutdown(); //优雅关闭:等待已提交任务完成,不再接受新任务;
// cachedPool.shutdownNow(); //强制关闭:等待已提交任务完成,不再接受新任务,并打断正在处理的任务
}
/**
* 运行结果:
* 主线程:创建第1 个任务
* 线程池中的异步任务执行【开始】
* 主线程循环到:1
* 主线程:创建第2 个任务
* 主线程循环到:2
* 主线程:创建第3 个任务
* 线程池中的异步任务执行【开始】
* 主线程循环到:3
* 主线程:创建第4 个任务
* 线程池中的异步任务执行【开始】
* 主线程循环到:4
* 主线程:创建第5 个任务
* 主线程循环到:5
* 线程 pool-1-thread-2 处理任务2
* 线程 pool-1-thread-1 处理任务1
* 线程 pool-1-thread-3 处理任务3
* 线程池中的异步任务执行【完毕】
* 线程池中的异步任务执行【完毕】
* 线程池中的异步任务执行【完毕】
* 线程池中的异步任务执行【开始】
* 线程 pool-1-thread-3 处理任务4
* 线程池中的异步任务执行【开始】
* 线程 pool-1-thread-1 处理任务5
* 线程池中的异步任务执行【完毕】
* 线程池中的异步任务执行【完毕】
*
*
*
*
*/
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。