ExecutorService类,Executors.newFixedThreadPool()方法
时间: 2023-08-15 13:09:46 浏览: 107
`ExecutorService` 是 Java 提供的一个用于管理和执行线程任务的接口。`Executors.newFixedThreadPool()` 是 `ExecutorService` 接口的一个静态方法,用于创建一个固定大小的线程池。
`newFixedThreadPool(int nThreads)` 方法接受一个整数参数 `nThreads`,表示线程池中的线程数量。该方法会返回一个 `ExecutorService` 对象,它是一个固定大小的线程池,最多可以同时执行 `nThreads` 个任务。
以下是一个示例代码,演示如何使用 `ExecutorService` 和 `Executors.newFixedThreadPool()` 方法创建和使用固定大小的线程池:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小为 5 的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
final int taskId = i;
executor.execute(new Runnable() {
@Override
public void run() {
System.out.println("Task " + taskId + " is executing.");
// 执行任务的代码
}
});
}
// 关闭线程池
executor.shutdown();
}
}
```
在上述示例中,我们使用 `newFixedThreadPool(5)` 创建了一个固定大小为 5 的线程池。然后,通过调用 `execute()` 方法提交了 10 个任务到线程池中执行。每个任务都会输出一个简单的消息来表示它正在被执行。最后,我们调用 `shutdown()` 方法来关闭线程池。
需要注意的是,当任务提交给线程池后,线程池会自动分配线程来执行任务。如果线程池中的线程都在执行任务时,新提交的任务将会等待直到有空闲的线程可用。当不再需要使用线程池时,应该调用 `shutdown()` 方法来关闭线程池,以确保所有任务都被执行完毕,并释放线程池中的资源。
阅读全文