`
13146489
  • 浏览: 251486 次
  • 性别: 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 多线程与并发(16-26)-JUC集合- BlockingQueue详解.pdf

    `BlockingDeque`相比于`BlockingQueue`增加了更多的灵活性,例如,`offerFirst()`, `offerLast()`, `peekFirst()`, `peekLast()`等方法,分别用于在队列的前端和后端进行操作。 在实际应用中,`BlockingQueue`和`...

    java并发编程:juc、aqs

    **BlockingDeque(阻塞双端队列)**:在JUC中,`BlockingDeque`是一种线程安全的双端队列,可以用于生产者-消费者模型。与`BlockingQueue`类似,它允许一个线程生产对象,另一个线程消费对象,但`BlockingDeque`允许...

    一个小的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线程大总结.pdf

    在这个大总结中,我们将重点关注Java中的两种重要并发工具:信号量(Semaphore)和阻塞队列(BlockingQueue),以及相关的阻塞栈(BlockingDeque)。 首先,信号量是一个用于控制对共享资源访问的计数器。它允许...

    Java常见的线程安全的类.docx

    3. BlockingQueue和BlockingDeque:这两个接口提供了线程安全的队列操作,如ArrayBlockingQueue、LinkedBlockingQueue和PriorityBlockingQueue实现了BlockingQueue接口,而LinkedBlockingDeque实现了BlockingDeque...

    java线程大总结[汇编].pdf

    除了阻塞队列,Java 6还引入了阻塞栈(BlockingDeque),它继承自`java.util.concurrent.BlockingDeque`接口。阻塞栈的行为类似于阻塞队列,但其数据访问遵循“后进先出”(LIFO)的原则,即最后入栈的元素最先出栈...

    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. 交换机 ...

    Java并发编程(21)并发新特性-阻塞队列和阻塞栈(含代

    阻塞栈,即阻塞双端队列(BlockingDeque),在Java中由`LinkedBlockingDeque`实现。它同时具备队列和栈的特点,允许在两端进行插入和删除操作。与阻塞队列类似,当栈为空或满时,操作会阻塞,从而实现了线程间的同步...

    Java6 Collection Framework 新特性概览.pdf

    - **定义**:实现了BlockingDeque接口,是一个可测量的、并发的、基于链接节点的Deque。 - **特点**: - 支持FIFO模式。 - 模块化的设计使其具有良好的扩展性和性能表现。 - **AbstractMap.SimpleEntry** 和 **...

Global site tag (gtag.js) - Google Analytics