java.lang.Thread.State: RUNNABLE at java.util.HashMap$TreeNode.balanceInsertion(HashMap.java:2239) at java.util.HashMap$TreeNode.treeify(HashMap.java:1945) at java.util.HashMap$TreeNode.split(HashMap.java:2180) at java.util.HashMap.resize(HashMap.java:714) at java.util.HashMap.putVal(HashMap.java:663) at java.util.HashMap.put(HashMap.java:612) at com.luck.ejob.server.MainTest$1.run(MainTest.java:151) at java.lang.Thread.run(Thread.java:748)
balanceInsertion方法是对树进行一个重新的平衡。它也会引起死循环。
场景三
1 2 3 4 5 6 7
java.lang.Thread.State: RUNNABLE at java.util.HashMap$TreeNode.root(HashMap.java:1824) at java.util.HashMap$TreeNode.putTreeVal(HashMap.java:1978) at java.util.HashMap.putVal(HashMap.java:638) at java.util.HashMap.put(HashMap.java:612) at com.luck.ejob.server.MainTest$1.run(MainTest.java:151) at java.lang.Thread.run(Thread.java:748)
1 2 3 4 5 6 7
final TreeNode<K,V> root() { for (TreeNode<K,V> r = this, p;;) { if ((p = r.parent) == null) return r; r = p; //1824行 } }