newFixedThreadPool
是 Java 中 ExecutorService
的一种实现,它创建了一个固定大小的线程池。当线程池中的线程完成任务后,它们不会立即销毁,而是会进入等待状态,等待新的任务到来。这样可以避免频繁创建和销毁线程带来的性能开销,提高系统资源的利用率。
要使用 newFixedThreadPool
创建一个固定大小的线程池并复用线程,你可以按照以下步骤操作:
java.util.concurrent.Executors
类。Executors.newFixedThreadPool(int nThreads)
方法创建一个固定大小的线程池。参数 nThreads
表示线程池中的最大线程数。ExecutorService
的 submit()
或 execute()
方法提交任务到线程池。这些方法会返回一个表示异步计算结果的 Future
对象(对于 submit()
)或 void
(对于 execute()
)。下面是一个简单的示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class FixedThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小为 3 的线程池
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
final int taskNumber = i;
Future<?> future = executorService.submit(() -> {
System.out.println("Task " + taskNumber + " is executed by thread " + Thread.currentThread().getName());
try {
// 模拟任务执行耗时
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
// 关闭线程池
executorService.shutdown();
}
}
在这个示例中,我们创建了一个固定大小为 3 的线程池,并提交了 10 个任务。线程池会自动分配线程来执行这些任务,并在任务完成后复用线程。最后,我们调用 shutdown()
方法关闭线程池。