newCachedThreadPool
是 Java 中 Executors
类提供的一个线程池创建方法。它会根据需要创建新的线程,但是当线程数量达到处理需要时,它会重用已创建的线程。如果线程闲置的时间超过 60 秒,则被终止并移出缓存。这种线程池可以有效地控制线程数量,避免大量线程之间的竞争和上下文切换,适用于执行大量短时任务。
以下是 newCachedThreadPool
的参数说明:
keepAliveTime
参数的单位。默认值为 TimeUnit.SECONDS
。这个参数可以根据实际需要设置。SynchronousQueue
,这意味着如果任务数量超过了当前可用线程数,新提交的任务将会被拒绝。可以根据实际需要选择合适的有界队列或者无界队列。示例代码:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
public class CachedThreadPoolExample {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newCachedThreadPool();
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
executorService.submit(() -> {
System.out.println("Task executed by thread: " + Thread.currentThread().getName());
});
}
// 关闭线程池
executorService.shutdown();
}
}
在这个示例中,我们创建了一个 ScheduledExecutorService
实例,并使用 newCachedThreadPool
方法创建了一个线程池。然后,我们提交了 10 个任务到线程池,并打印了每个任务执行的线程名称。最后,我们调用 shutdown
方法关闭线程池。