线程转储:74个线程处于阻塞状态

时间:2019-07-02 13:50:24

标签: java multithreading thread-safety threadpool thread-dump

我刚刚生成了运行以下命令的Java应用程序的线程转储:

> ./jstack -F 4697 >>/tmp/thread_dump_1529.log

经过一些检查,我意识到有74个处于BLOCKED状态的线程,它们都具有相同的堆栈跟踪:

在以下代码中,您可以在这些线程陷入sun.misc.Unsafe.park(boolean, long)之前看到它们的堆栈:

threadId:Thread 5212 - state:BLOCKED
stackTrace:
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information 
may be imprecise)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, 
line=175 (Compiled frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() 
@bci=42, line=2039 (Compiled frame)
- java.util.concurrent.LinkedBlockingQueue.take() @bci=29, line=442 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
- java.lang.Thread.run() @bci=11, line=748 (Interpreted frame)

此外,我发现sun.misc.Unsafe.park(boolean, long)将线程置于其等待状态。我试图杀死4697进程并重新启动,但是这些被阻塞的线程仍然存在。

这些被阻塞的线程是什么?

0 个答案:

没有答案