"Star Builder 129" daemon prio=10 tid=0x00007f41bd8f6000 nid=0x152b0 waiting on condition [0x00007f445cd1a000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00007f59c9e1c278> (a java.util.concurrent.FutureTask)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:422)
at java.util.concurrent.FutureTask.get(FutureTask.java:199)
我花了最後一天的時間試圖理解這實際上是什麼意思。沒有足夠的信息,或者我找不到任何有用的信息。分析java線程轉儲
「等待條件」是什麼意思?我們在監視器上等着嗎? 「0x00007f445cd1a000」表示什麼?
「停車等待」是什麼意思?什麼是「0x00007f59c9e1c278」?
的源代碼:
List<FutureTask<List<FileStatus>>> tasks = new LinkedList<FutureTask<List<FileStatus>>>();
for(int idx = 0, len = Math.max(1,numberOfThreads()); idx < len; ++idx) {
StatusWorker worker = new StatusWorker(this, qualifiedPath, userFilter, prefixQueue, prefixCounter, statusCounter);
FutureTask<List<FileStatus>> task = new FutureTask<List<FileStatus>>(worker);
threadPool.execute(task);
tasks.add(task);
}
try {
List<FileStatus> statuses = new LinkedList<FileStatus>();
for(FutureTask<List<FileStatus>> task : tasks) {
statuses.addAll(task.get(FILE_LISTING_TIMEOUT, TimeUnit.SECONDS));
logger.debug("Result from task [{}]", task);
}
TD中應該存在第二個「0x00007f59c9e1c278」事件。這是做一些行動,線程等待,直到這個動作完成。這表示像紅綠燈一樣的鎖。等到你可以運行(紅到綠開關)。 – Konrad
這就是我檢查的第一件事情,在TD中不存在具有此ID(「0x00007f59c9e1c278」)的其他線程。一些線程可以放在jstack輸出中嗎? – ajaymysore
您使用的是哪個JDK版本? –