import java.util.concurrent.*;
public class ThreadPoolExecutorExample {
public static void main(String[] args) {
// 创建一个线程池,核心线程数为2,最大线程数为4,空闲线程存活时间为60秒,使用LinkedBlockingQueue作为任务队列
ThreadPoolExecutor executor = new ThreadPoolExecutor(
2,
4,
60L,
TimeUnit.SECONDS,
new LinkedBlockingQueue<>()
);
// 提交多个任务给线程池执行
for (int i = 0; i < 10; i++) {
int taskId = i;
executor.submit(() -> {
System.out.println("Executing task " + taskId + " by thread " + Thread.currentThread().getName());
try {
// 模拟任务执行时间
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task " + taskId + " completed");
});
}
// 关闭线程池
executor.shutdown();
try {
// 等待所有任务完成
if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
executor.shutdownNow();
}
} catch (InterruptedException e) {
executor.shutdownNow();
}
}
}
ThreadPoolExecutor
来创建一个自定义的线程池。线程池的核心线程数为2,最大线程数为4,空闲线程存活时间为60秒,使用LinkedBlockingQueue
作为任务队列。submit
方法向线程池提交10个任务,每个任务会打印当前执行的任务ID和执行该任务的线程名称,并模拟2秒的任务执行时间。shutdown
方法来关闭线程池,然后使用awaitTermination
等待所有任务完成。如果在指定时间内未能完成所有任务,则调用shutdownNow
强制关闭线程池。上一篇:java本地缓存
下一篇:nextint在java中的用法
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站