绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
java编程-无锁初始化
2017-03-25 15:46:00
private final Node<K,V>[] initTable() {
        Node<K,V>[] tab; int sc;
        while ((tab = table) == null || tab.length == 0) {
            if ((sc = sizeCtl) < 0)
                Thread.yield(); // lost initialization race; just spin
            else if (U.compareAndSwapInt(this, SIZECTL, sc, -1)) {
                try {
                    if ((tab = table) == null || tab.length == 0) {
                        int n = (sc > 0) ? sc : DEFAULT_CAPACITY;
                        @SuppressWarnings("unchecked")
                        Node<K,V>[] nt = (Node<K,V>[])new Node<?,?>[n];
                        table = tab = nt;
                        sc = n - (n >>> 2);
                    }
                } finally {
                    sizeCtl = sc;
                }
                break;
            }
        }
        return tab;
    }

 

分享好友

分享这个小栈给你的朋友们,一起进步吧。

MySQL内核开发
创建时间:2020-05-21 10:40:20
MySQL内核开发与维护; OLTP类数据库内核技术和运维; 日常工作遇到的技术挑战和疑难杂症。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 友哥
    栈主

小栈成员

查看更多
  • tianya_2011
  • shiwenjunx
  • sunbjt
  • bennysongs
戳我,来吐槽~