import java.util.concurrent.*;
public class CustomThreadPoolExample {
public static void main(String[] args) {
// 创建一个自定义的线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(
2, // 核心线程数
4, // 最大线程数
60L, // 线程空闲时间
TimeUnit.SECONDS, // 时间单位
new LinkedBlockingQueue<>(100), // 任务队列
new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略
);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
int taskNumber = i;
executor.submit(() -> {
System.out.println("Executing Task " + taskNumber + " by " + Thread.currentThread().getName());
try {
Thread.sleep(2000); // 模拟任务执行时间
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
// 关闭线程池
executor.shutdown();
try {
if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
executor.shutdownNow();
}
} catch (InterruptedException e) {
executor.shutdownNow();
}
}
}
创建自定义线程池:
ThreadPoolExecutor 构造函数创建一个自定义线程池。提交任务:
submit() 方法将任务提交给线程池执行。Runnable 接口的匿名类或 lambda 表达式。关闭线程池:
shutdown() 方法平滑地关闭线程池,不再接受新任务,但会继续执行已提交的任务。awaitTermination() 等待所有任务完成,超时后调用 shutdownNow() 强制关闭线程池。上一篇:java时间加减分钟
下一篇:java &运算
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站