anranran 2019-11-29 16:56
浏览 456

ArrayBlockingQueue.poll出现Cpu 100%

异常如下:

生产者线程,较多,其中一个栈如下

"http-thread-pool-8090(1) SelectorRunner" daemon prio=10 tid=0x00007f70c001b800 nid=0x3bb waiting on condition [0x00007f71b45ce000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:324)

消费者线程,只有一个,线程栈如下:

"Async-Log-Thread" prio=10 tid=0x00007f71d4ade800 nid=0x3b0 runnable [0x00007f71b51ed000]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.yield(Native Method)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait(AbstractQueuedSynchronizer.java:1709)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2079)
at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:389)

http-thread-pool线程向ArrayBlockingQueue队列中写入,put操作卡住了。
说明这里队列满了,但发现对应用消费线程却卡用poll操作上。但又不是 hang死,cpu很高,该问题有没有什么解决思路?

各路大神,请帮助。
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 matlab有关常微分方程的问题求解决
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?
    • ¥100 求三轴之间相互配合画圆以及直线的算法
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable