Executors.newFixedThreadPool的execute与submit
时间: 2023-10-25 16:29:39 浏览: 123
简单谈谈ThreadPoolExecutor线程池之submit方法
`Executors.newFixedThreadPool` 是一个工具类 `Executors` 中的静态方法,它返回一个固定大小的线程池,可以执行多个任务。该方法接受一个整数参数 `nThreads`,表示线程池中线程的数量。
`execute` 和 `submit` 是 `ExecutorService` 接口中定义的两个方法,都用于向线程池提交任务。
`execute` 方法接受一个 `Runnable` 对象作为参数,用于执行不需要返回结果的任务。它将任务提交给线程池,并立即返回,不等待任务执行完成。
示例代码:
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(new Runnable() {
public void run() {
// 执行任务的代码
}
});
```
`submit` 方法也接受一个 `Runnable` 对象作为参数,但是它可以用于执行需要返回结果的任务。该方法返回一个 `Future` 对象,可以通过该对象获取任务执行的结果。
示例代码:
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
Future<?> future = executor.submit(new Runnable() {
public void run() {
// 执行任务的代码
}
});
```
通过调用 `future.get()` 方法,可以获取任务的执行结果。如果任务还未完成,该方法将会阻塞,直到任务完成并返回结果。
需要注意的是,`submit` 方法还可以接受一个 `Callable` 对象作为参数,用于执行需要返回结果的任务,并且返回一个 `Future` 对象。`Callable` 是 `Runnable` 的子接口,它的 `call` 方法可以返回一个结果。
总结来说,`execute` 方法用于提交不需要返回结果的任务,而 `submit` 方法用于提交需要返回结果的任务。
阅读全文