Java uygulamamın (tomcat6 üzerinde çalışır) sonlandırılmayan bir çok iş parçacığı oluşturduğunu fark ettim. Beklemedeki/uykudaki sorunların nedenini bulma
Bu yüzden bir iş parçacığı dökümü oluşturulur ve bu gibi bekleyen iş parçacığı ton olduğunu fark:"pool-1-thread-22" prio=5 tid=101b4b000 nid=0x127122000 waiting on condition [127121000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <6c340cee0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:680)
Locked ownable synchronizers:
- None
Şimdi soru şu: NE Bu konu bekliyorsun? Bu konuları ürettikleri sanılan bir şüpheli sınıfım var ama bu konuların tam olarak ne yaptığını bilmiyorum.
Sınıfı birbirinden ayırmak ve iş parçacığı davranışını takip etmek dışında bunun nedenini bulmak için yapabileceğim bir şey var mı?
Bir kuyrukta engelleniyorlar. Özellikle, bir sıra boş olduğunda sonsuza kadar engelleyen 'LinkedBlockingQueue.take()'. –
Bu ne anlama geliyor? Hangi sıra ve ne yaparsın? – Timo
Erm, bu senin kodun ... biz medyum değiliz. Sadece iplik döküntüsünün sana söylediği şeyi söylüyorum. –