import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小为 5 的线程池
ExecutorService executorService = Executors.newFixedThreadPool(5);
// 提交 10 个任务给线程池执行
for (int i = 0; i < 10; i++) {
int taskNumber = i + 1;
executorService.submit(() -> {
System.out.println("Task " + taskNumber + " is running on thread " + Thread.currentThread().getName());
try {
// 模拟任务耗时操作
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
System.out.println("Task " + taskNumber + " was interrupted");
}
System.out.println("Task " + taskNumber + " is completed");
});
}
// 关闭线程池,不再接受新的任务,但会继续执行已提交的任务
executorService.shutdown();
// 可以使用 awaitTermination 等待所有任务完成(可选)
// executorService.awaitTermination(1, TimeUnit.HOURS);
}
}
Executors.newFixedThreadPool(5)
创建了一个固定大小为 5 的线程池。这意味着最多同时有 5 个线程在执行任务。executorService.submit()
方法提交了 10 个任务给线程池。每个任务都会打印当前任务编号和正在执行的线程名称,并模拟了一个耗时 2 秒的操作。executorService.shutdown()
方法关闭线程池,这表示不再接受新的任务,但会继续执行已经提交的任务。awaitTermination
方法等待所有任务完成。这个示例展示了如何使用 Java 的线程池来管理并发任务。
下一篇:java string join
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站