|
|
51CTO旗下网站
|
|
移动端

1.4.2 ExecutorService

《Java多线程与Socket:实战微服务框架》第1章多线程基础,本书尽量采用简要和通俗易懂的方式来介绍多线程知识。本节为大家介绍ExecutorService。

作者:庞永华来源:电子工业出版社|2019-03-26 15:47

1.4.2 ExecutorService

通过Executors创建的线程池都实现了ExecutorService接口。调用它的execute或submit方法即可向线程池提交任务。下面介绍ExecutorService接口的主要方法。

. shutdown():异步关闭线程池。调用后将不允许再向线程池提交新任务,但允许继续执行已提交到线程池的任务。调用后立即返回,不会阻塞当前线程。

. shutdownNow():立即异步关闭线程池。调用后将不允许再向线程池提交新任务,且会取消已提交到队列中的任务,并调用池中所有线程的 interrupt() 方法来尝试中断正在执行的任务。调用后立即返回,不会阻塞当前线程。不过要注意,如果某些线程所执行的任务代码没能很好地处理interrupt中断(参见1.6.5节),则调用shutdownNow()无法保证一定能成功停止这些线程。

. awaitTermination(timeout, unit):调用此方法将阻塞当前线程,以等待线程池中的任务执行完毕。参数为***的等待时长(超时时间)。要注意的是,此方法需要在调用shutdown()/shutdownNow()之后调用,否则无效。

. isTerminated():用于在调用shutdown()后判断线程池中的任务是否都已完成。

. execute(command):向线程池提交一个任务,且不需要返回结果。

. submit(task):向线程池提交一个任务,且需要返回结果。

. isShutdown():返回线程池是否已关闭。

. invokeAll(tasks, timeout, unit):启动多个线程,并发地执行多个任务,这些任务要么执行成功,要么因为异常或超时而被取消。

. invokeAny(tasks, timeout, unit):启动多个线程,相互独立(无同步)地计算一个结果。一旦其中一个线程成功返回,则终止其他线程。


喜欢的朋友可以加入官方的读书群

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

网管员世界2007超值精华本

《网管员世界》是国内唯一一家专门面向网管员职业的刊物。本书是2006年《网管员世界》各期内容的汇集,内容权威、全面、时效性强,贴近应用...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客