Executor接口的主要意义是将任务的提交和任务的执行比如线程的使用、线程的调度等进行解耦。Executor主要用来替换显示的创建线程。
Executor接口并没有严格的要求执行必须是异步的。下面这个例子展示了在调用着的线程里执行executor提交的任务。
class DirectExecutor implements Executor{
public void execute(Runnable r){
r.run();
}
}
一般情况下,executor提交的任务在单独的线程里执行,而不是在调用者的线程里执行。下面的例子展示了executor为每一个任务生产一个线程执行。
class ThreadPerTaskExecutor implements Executor{
public void execute(Runnable r){
new Thread(r).start();
}
}