首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

封锁BlockingDeque

2012-12-24 
关闭BlockingDeque我在将一个后台线程至于executor中,并使用executor.shutdown(),并且无法终止进入死循环

关闭BlockingDeque
我在将一个后台线程至于executor中,并使用executor.shutdown(),并且无法终止进入死循环的线程,因为他只会等任务完成。,但是JVM并未退出。
后台线程run方法:

while (true) {                        Protocol protocol;try {protocol = protocolsQueue.take();protocol.execute(this);} catch (InterruptedException e) {logger.debug("收到服务器中断命令,退出执行协议线程");}}


后来发现时 BlockingDeque的take()将线程阻塞了。便使用executor.shutdownNow(),该方法会发出中断信号。正如前面的代码,take()要捕捉中断异常。代码改为如下:
@Overridepublic void run() {while (running) {Protocol protocol;try {protocol = protocolsQueue.take();protocol.execute(this);} catch (InterruptedException e) {logger.debug("收到服务器中断命令,退出执行协议线程");running = false;}}}

热点排行