`
13146489
  • 浏览: 246813 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关闭BlockingDeque

JVM 
阅读更多
我在将一个后台线程至于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()要捕捉中断异常。代码改为如下:
@Override
	public void run() {
		while (running) {
			Protocol protocol;
			try {
				protocol = protocolsQueue.take();

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

分享到:
评论

相关推荐

    java.util.concurrent.BlockingDeque API介绍和简单案例

    java.util.concurrent.BlockingDeque API介绍和简单案例

    Java多线程调用BlockingDeque跑批量数据的例子

    一个线程从A表读数据放入队列 N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送...

    一个小的java Demo , 非常适合Java初学者学习阅读.rar

    同步队列 SynchronousQueue,阻塞双端队列 BlockingDeque, 链阻塞双端队列 LinkedBlockingDeque,并发 Map(映射) ConcurrentMap, 并发导航映射 ConcurrentNavigableMap,交换机 Exchanger, 信号量 Semaphore,执行器...

    java并发工具包详解

    8. 阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. 栅栏 CyclicBarrier 14. 交换机 ...

    java并发工具包 java.util.concurrent中文版用户指南pdf

    8. 阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. 栅栏 CyclicBarrier 14. 交换机 ...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf

    阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航 映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. 栅栏 CyclicBarrier 14. 交换机 ...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版

    8. 阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. 栅栏 CyclicBarrier 14. 交换机 ...

    java并发包资源

    8. 阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. 栅栏 CyclicBarrier 14. 交换机 ...

    javaSE代码实例

    17.6.1 BlockingDeque接口与LinkedBlockingDeque类简介 401 17.6.2 LinkedBlockingDeque类的具体使用 402 17.7 线程安全的单变量操作 403 17.7.1 atomic包简介 403 17.7.2 atomic包中类的具体使用 404 ...

Global site tag (gtag.js) - Google Analytics