title: why java.util.HashMap.getEntry can block my program?
body: <p>my program had been blocked , I used the jstack commander to analyze, the following thread took the lock "0x0000000603f02ae0" , and others threads couldn't fetch the lock.<br>
  I had waited at least one hour, but the thread didn't unlock , my question is why the thread'state is RUNNING, and stop at java.util.HashMap.getEntry(HashMap.java:347) ? it is oracle(sun) JDK's bug ?</p>
  
  <p>my jdk version :<br>
  java version "1.6.0_21"<br>
  Java(TM) SE Runtime Environment (build 1.6.0_21-b06)<br>
  Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)</p>
  
  <p>The thread info:<br>
  "PandoraScheduleTrigger-thread-5" prio=10 tid=0x00000000443b0800 nid=0x5804 runnable [0x0000000043722000]
     java.lang.Thread.State: RUNNABLE
      at java.util.HashMap.getEntry(HashMap.java:347)
      at java.util.HashMap.containsKey(HashMap.java:335)
      at com.youlongqingfeng.pandora.context.ArmiesContext._getArmy(ArmiesContext.java:239)
      at com.youlongqingfeng.pandora.context.ArmiesContext.getArmiesByCityId(ArmiesContext.java:169)
      at 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)
      at com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit.buildTaskFinish(ZhouMapResourceUnit.java:1618)
      - <strong>locked &lt;0x0000000603f02ae0></strong> (a com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit)
      at com.youlongqingfeng.pandora.trigger.BuildTrigger.innerRun(BuildTrigger.java:39)
      at com.youlongqingfeng.gameserver.utils.threadpool.CancelTrigger.run(CancelTrigger.java:34)</p>
  
  <p>Blocked thread dump:</p>
  
  <p>"PandoraScheduleTrigger-thread-3" prio=10 tid=0x0000000044c7c000 nid=0x5802 waiting for monitor entry [0x0000000043520000]
     java.lang.Thread.State: BLOCKED (on object monitor)
      at com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit.armiesGroupReturnBack(ZhouMapResourceUnit.java:2279)
      - <strong>waiting to lock &lt;0x0000000603f02ae0></strong> (a com.youlongqingfeng.pandora.map.unit.ZhouMapResourceUnit)
      at com.youlongqingfeng.pandora.trigger.ArmyGroupArrivedTrigger.innerRun(ArmyGroupArrivedTrigger.java:53)
      at com.youlongqingfeng.gameserver.utils.threadpool.CancelTrigger.run(CancelTrigger.java:34)
      at 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)
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)</p>
  
  <p>thank you.</p>