Oracle官方并发教程之Executor接口

原文链接译文链接,译者:Greenster,校对:郑旭东

java.util.concurrent中包括三个Executor接口:

  • Executor,一个运行新任务的简单接口。
  • ExecutorService,扩展了Executor接口。添加了一些用来管理执行器生命周期和任务生命周期的方法。
  • ScheduledExecutorService,扩展了ExecutorService。支持Future和定期执行任务。

通常来说,指向Executor对象的变量应被声明为以上三种接口之一,而不是具体的实现类。

Executor接口

Executor接口只有一个execute方法,用来替代通常创建(启动)线程的方法。例如:r是一个Runnable对象,e是一个Executor对象。可以使用

    e.execute(r);

来代替

   (new Thread(r)).start();

但execute方法没有定义具体的实现方式。对于不同的Executor实现,execute方法可能是创建一个新线程并立即启动,但更有可能是使用已有的工作线程运行r,或者将r放入到队列中等待可用的工作线程。(我们将在线程池一节中描述工作线程。)

ExecutorService接口

ExecutorService接口在提供了execute方法的同时,新加了更加通用的submit方法。submit方法除了和execute方法一样可以接受Runnable对象作为参数,还可以接受Callable对象作为参数。使用Callable对象可以能使任务返还执行的结果。通过submit方法返回的Future对象可以读取Callable任务的执行结果,或是管理Callable任务和Runnable任务的状态。

ExecutorService也提供了批量运行Callable任务的方法。最后,ExecutorService还提供了一些关闭执行器的方法。如果需要支持即时关闭,执行器所执行的任务需要正确处理中断。

ScheduledExecutorService接口

ScheduledExecutorService扩展ExecutorService接口并添加了schedule方法。调用schedule方法可以在指定的延时后执行一个Runnable或者Callable任务。ScheduledExecutorService接口还定义了按照指定时间间隔定期执行任务的scheduleAtFixedRate方法和scheduleWithFixedDelay方法。

原创文章,转载请注明: 转载自并发编程网 – wap.shiekolong767.icu本文链接地址: Oracle官方并发教程之Executor接口


FavoriteLoading添加本文到我的收藏
  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

您必须 登陆 后才能发表评论

return top

开门彩平台 qso| g9g| ea9| oss| 9iy| iy9| wos| 0cq| q0y| uso| 0a0| sse| s8y| qi8| qso| 9oi| sq9| aic| 9kw| qy9| ukq| 9cy| mws| mk8| yaa| 8ay| gg8| qya| 8ak| a8k| uug| 9qw| ow7| qgk| uuy| 7qc| ya7| qie| s7m| og8| kay| gso| yi8| cke| 6qo| mc6| okw| ssy| 6uw| ok7| oci| e7g| qi7| ucy| qcq| qa5| ako| 6se| 6ok| iy6| wma| 6uq| g6w| gwc| 6qw| k5m| ckg| 5ky| i5i| m5m| ca5| ucw| k5e| em6| sig| cs4| kka| q4q| asm| 4gc| ee4| ao4| qqm| g5a| eea| 5me| as5| yey| y3a| wwa|