Java的ThreadPoolExecutor
是一个用于执行和管理线程的类,它可以帮助你更有效地控制并发任务的执行。下面是一个简单的示例,展示了如何使用ThreadPoolExecutor
来执行一组任务:
import java.util.concurrent.*;
ThreadPoolExecutor
实例:int corePoolSize = 5; // 核心线程数
int maximumPoolSize = 10; // 最大线程数
long keepAliveTime = 60L; // 空闲线程的存活时间(单位:秒)
TimeUnit unit = TimeUnit.SECONDS; // 存活时间的单位
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(20); // 任务队列
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
ThreadPoolExecutor
:for (int i = 0; i < 20; i++) {
int finalI = i;
threadPoolExecutor.submit(() -> {
System.out.println("Task " + finalI + " is executed by thread " + Thread.currentThread().getName());
});
}
ThreadPoolExecutor
:threadPoolExecutor.shutdown();
try {
if (!threadPoolExecutor.awaitTermination(60, TimeUnit.SECONDS)) {
threadPoolExecutor.shutdownNow();
}
} catch (InterruptedException e) {
threadPoolExecutor.shutdownNow();
}
这个示例中,我们创建了一个ThreadPoolExecutor
实例,设置了核心线程数、最大线程数、空闲线程存活时间等参数。然后,我们提交了20个任务到ThreadPoolExecutor
,并等待所有任务执行完成。最后,我们关闭了ThreadPoolExecutor
。
注意:在实际应用中,你可能需要根据具体需求调整corePoolSize
、maximumPoolSize
、keepAliveTime
等参数。此外,你还可以使用Executors
类提供的工厂方法(如newFixedThreadPool()
、newCachedThreadPool()
等)来创建ThreadPoolExecutor
实例,而无需手动设置这些参数。