import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池,线程数为5
ExecutorService executor = Executors.newFixedThreadPool(5);
// 将线程池转换为ThreadPoolExecutor以便获取更多参数信息
ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;
// 打印线程池的一些参数
System.out.println("Core Pool Size: " + threadPoolExecutor.getCorePoolSize());
System.out.println("Maximum Pool Size: " + threadPoolExecutor.getMaximumPoolSize());
System.out.println("Active Threads: " + threadPoolExecutor.getActiveCount());
System.out.println("Completed Tasks: " + threadPoolExecutor.getCompletedTaskCount());
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
executor.submit(() -> {
try {
System.out.println("Executing task in thread: " + Thread.currentThread().getName());
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
}
// 关闭线程池
executor.shutdown();
try {
if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
executor.shutdownNow();
}
} catch (InterruptedException e) {
executor.shutdownNow();
}
}
}
创建线程池:
Executors.newFixedThreadPool(5)
创建了一个固定大小为5的线程池。获取线程池参数:
ExecutorService
转换为 ThreadPoolExecutor
以访问更多的线程池参数,如核心线程数、最大线程数、活跃线程数和已完成任务数。提交任务:
executor.submit()
方法提交了10个任务到线程池中。每个任务在执行时会打印当前线程名称,并休眠2秒模拟任务处理时间。关闭线程池:
executor.shutdown()
方法关闭线程池,并使用 awaitTermination()
等待所有任务完成。如果超过指定时间仍未完成,则调用 shutdownNow()
强制关闭线程池。Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站