моя программа была заблокирована, я использовал команду jstack для анализа, следующий поток взял блокировку «0x0000000603f02ae0», а другие потоки не смогли получить блокировку.
Я ждал хотя бы один час, но нить не разблокировалась, мой вопрос в том, почему thread_state является RUNNING и останавливается на java.util.HashMap.getEntry (HashMap.java:347)? ошибка оракула (солнца) JDK?Почему java.util.HashMap.getEntry может заблокировать мою программу?
моя версия JDK:
ява версия "1.6.0_21"
Java (TM) SE Runtime Environment (сборка 1.6.0_21-b06)
Java HotSpot (TM) 64-разрядного сервера VM (сборка 17.0- b16, смешанный режим)
Информационный поток:
"PandoraScheduleTrigger-нить-5" PRIO = 10 TID = 0x00000000443b0800 NID = 0x5804 работоспособной [0x0000000043722000] java.lang.Thread.State: Runnable в java.util .HashMap.getEntry (HashMap.java:347) at java.util.HashMap.containsKey (HashMap.java:335)на com.youlongqingfeng.pandora.context.ArmiesContext._getArmy (ArmiesContext.java:239) в com.youlongqingfeng.pandora.context.ArmiesContext.getArmiesByCityId (ArmiesContext.java:169) в com.youlongqingfeng.pandora.model. City.getTotalApplianceMap (City.java:4519) at com.youlongqingfeng.pandora.model.City.calculateMemoryResource (City.java:4636) at com.youlongqingfeng.pandora.model.City.buildTaskFinish (City.java:1089) в com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit.buildTaskFinish (ZhouMapResourceUnit.java:1618) - заперта < 0x0000000603f02ae0> (а) com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit в com.youlongqingfeng. pandora.trigger. BuildTrigger.innerRun (BuildTrigger.java:39) в com.youlongqingfeng.gameserver.utils.threadpool.CancelTrigger.run (CancelTrigger.java:34)
Blocked нить свалка:
«PandoraScheduleTrigger-нить-3 "PRIO = 10 TID = 0x0000000044c7c000 NID = 0x5802 ожидании входа монитора [0x0000000043520000] java.lang.Thread.State: BLOCKED (на мониторе объекта) на com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit.armiesGroupReturnBack (ZhouMapResourceUnit. java: 2279) - Ожидание блокировки < 0x0000000603f02ae0> (a com.youlongqingfeng.pandora.map.unit.ZhouMapResourceU нит) на com.youlongqingfeng.pandora.trigger.ArmyGroupArrivedTrigger.innerRun (ArmyGroupArrivedTrigger.java:53) на com.youlongqingfeng.gameserver.utils.threadpool.CancelTrigger.run (CancelTrigger.java:34) в java.util. concurrent.Executors $ RunnableAdapter.call (Executors.java:441) at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:303) at java.util.concurrent.FutureTask.run (FutureTask.java: 138) в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301 (ScheduledThreadPoolExecutor.java:98) в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:207) в java.util.concurrent .ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886)в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:908) в java.lang.Thread.run (Thread.java:619)
спасибо.
Какие другие потоки выполняются одновременно - в частности, есть ли другой поток, который обращается к тому же ресурсу? –
См. Http://stackoverflow.com/questions/10219724/vaadin-blocking-in-java-util-hasmap – Vadzim