java.util.Concurrent包定义了三类执行器接口:
1 Executor,一个简单的执行器支持启动新的任务
2 ExecutorService,Executor的子接口,增加了管理个体任务和执行器自身的生命周期的特性。
3 ScheduledExecutorService,ExecutorService的子接口,支持将来和/或者周期性任务的执行。
典型地,与Executor对象关联的变量被申明为这三类接口中的一个,而不是用一个执行器类。
The Executor Interface(执行器接口)
Executor接口提供了一个单一方法,execute,被设计成为一个线程-创建形式的可插入式替代。如果r是一个Runnable对象,e是一个Executor对象,你可以用e.execute(r)替代(new Thread(r)).start();
可是,execute的定义是笼统的。低级实行创建一个新的线程并立即启动它。虽然取决于Executor的实现,execute可能做那同样的事情,但是更有可能使用一个已经存在的工作线程来运行r,或者将r放置在一个队列中来等待一个工作线程变得可用。(工作线程将在线程池中讨论)
Executor的实现被设计成充分利用更先进的ExecutorService和ScheduledExecutorService接口,虽然它们也以基本的Executor接口工作。
The ExecutorService Interface
ExecutorService 接口使用一个相似但更全能的submit方法增强execute方法。如同executr,submit接受Runnable对象,但也接受回调对象,允许任务返回一个值。submit方法返回一个future对象,用来取回回调函数的返回值。并管理回调对象和Runnable任务的两者状态。
ExecutorService 也为提交海量回调对象提供了方法。最后,ExecutorService 也提供了大量方法来管理执行器的关闭。为了支持立即关闭,任务应该正确处理中断。
The ScheduledExecutorService Interface
ScheduledExecutorService 接口用schedue方法增强它父类ExecutorService的方法,将在一个指定的延迟后执行一个Runnable或者回调任务。另外,接口定义了scheduleAtFixedRate 和scheduleWithFixedDelay,将在定义的时间间隔多次执行指定的任务。
1 Executor,一个简单的执行器支持启动新的任务
2 ExecutorService,Executor的子接口,增加了管理个体任务和执行器自身的生命周期的特性。
3 ScheduledExecutorService,ExecutorService的子接口,支持将来和/或者周期性任务的执行。
典型地,与Executor对象关联的变量被申明为这三类接口中的一个,而不是用一个执行器类。
The Executor Interface(执行器接口)
Executor接口提供了一个单一方法,execute,被设计成为一个线程-创建形式的可插入式替代。如果r是一个Runnable对象,e是一个Executor对象,你可以用e.execute(r)替代(new Thread(r)).start();
可是,execute的定义是笼统的。低级实行创建一个新的线程并立即启动它。虽然取决于Executor的实现,execute可能做那同样的事情,但是更有可能使用一个已经存在的工作线程来运行r,或者将r放置在一个队列中来等待一个工作线程变得可用。(工作线程将在线程池中讨论)
Executor的实现被设计成充分利用更先进的ExecutorService和ScheduledExecutorService接口,虽然它们也以基本的Executor接口工作。
The ExecutorService Interface
ExecutorService 接口使用一个相似但更全能的submit方法增强execute方法。如同executr,submit接受Runnable对象,但也接受回调对象,允许任务返回一个值。submit方法返回一个future对象,用来取回回调函数的返回值。并管理回调对象和Runnable任务的两者状态。
ExecutorService 也为提交海量回调对象提供了方法。最后,ExecutorService 也提供了大量方法来管理执行器的关闭。为了支持立即关闭,任务应该正确处理中断。
The ScheduledExecutorService Interface
ScheduledExecutorService 接口用schedue方法增强它父类ExecutorService的方法,将在一个指定的延迟后执行一个Runnable或者回调任务。另外,接口定义了scheduleAtFixedRate 和scheduleWithFixedDelay,将在定义的时间间隔多次执行指定的任务。