Java ArrayBlockingQueue死锁

Java ArrayBlockingQueue死锁,java,multithreading,Java,Multithreading,所以,我现在有一个生产者-消费者系统,使用ArrayBlockingQueue。 很长一段时间以来,所有iz都很好,但昨天系统停止了,当我在jvm上执行jstack时,我发现应该提供的所有线程都在线程中。状态:在提供给ArrayBlockingQueue时等待,所有应该轮询的线程也都处于Thread.State:从ArrayblockingQueue轮询时的等待条件 我在分析jstack结果方面还是新手,但据我所知,jstack生成的日志是jvm中所有线程状态的快照。如果是这样,我猜这是一个僵局

所以,我现在有一个生产者-消费者系统,使用ArrayBlockingQueue。 很长一段时间以来,所有iz都很好,但昨天系统停止了,当我在jvm上执行jstack时,我发现应该提供的所有线程都在线程中。状态:在提供给ArrayBlockingQueue时等待,所有应该轮询的线程也都处于Thread.State:从ArrayblockingQueue轮询时的等待条件

我在分析jstack结果方面还是新手,但据我所知,jstack生成的日志是jvm中所有线程状态的快照。如果是这样,我猜这是一个僵局

我试着用谷歌搜索原因,但似乎找不到任何人谈论ArrayBlockingQueue中的死锁。我也无法重现这个问题。 这个问题是否存在已知的问题

这是jstack生成的一些日志:

报价:

ClientHandlerISO_404" prio=10 tid=0x8be5c800 nid=0x5299 waiting on condition [0x8b28c000..0x8b28ce30]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x95515440> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1971)
        at java.util.concurrent.ArrayBlockingQueue.offer(ArrayBlockingQueue.java:287)
        at id.co.vsi.common.database.DB.insertToTableAsynchronously(DB.java:177)
投票:


感谢您的帮助

并且您有一个唯一的BlockingQueue?是的,您无法从日志中看到它,但两个线程实际上都访问单个静态ArrayBlockingQueue对象。BlockingQueue中的死锁将是一个严重的错误。我想你不能复制它?这就是问题所在,我不能。我还没有找到共同点,有什么建议吗?哪种java?有没有可能是因为
DBQueryFileWriter_210" prio=10 tid=0x09528c00 nid=0x4eab waiting on condition [0x8cea1000..0x8cea1db0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x95515440> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1971)
        at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:342)
        at id.co.vsi.common.database.DBQueryFileWriter.run(DBQueryFileWriter.java:164)