ConcurrentHashMap put方法 代码

最近看了一下ConcurrentHashMap 的源码,在put方法的代码中,有这样一句判断 if (fh >= 0) 说明他是链表,为什么hash值大于等于0就是链表了,小于0就是红黑树了?哪位兄弟可以解释一下,谢了

因为TreeBin的构造方法中super(TREEBIN, null, null, null);
static final int TREEBIN = -2;
TreeBin的父类是Node,Node的构造方法第一个参数是hash,这里hash给的是-2

Node(int hash, K key, V val, Node<K,V> next) {
       this.hash = hash;
       this.key = key;
       this.val = val;
       this.next = next;
}