接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。一个 ExecutorService 实例因此特别像一个线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是一个线程池的实现。
ExecutorService 样例
这里有一个简单的使用Java 实现的 ExectorService 样例:
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Asynchronous task");
}
});
executorService.shutdown();
首先使用 newFixedThreadPool() 工厂方法创建一个 ExecutorService ,上述代码创建了一个可以容纳10个线程任务的线程池。其次,向 execute() 方法中传递一个异步的 Runnable 接口的实现,这样做会让 ExecutorService 中的某个线程执行这个 Runnable 线程。
任务的委托(Task Delegation)
下方展示了一个线程的把任务委托异步执行的ExecutorService的示意图。
一旦线程将任务委托给了ExecutorService
该线程,线程就会继续执行自己的执行,而不依赖于该任务的执行。
ExecutorService 的实现
由于ExecutorService
是一个接口,您需要其实现才能使用它。本ExecutorService
已在以下实现java.util.concurrent
包: