private final Node[] initTable(){
  Node[] tab;
  int sc;
  while ((tab=table) == null) {
    if ((sc=sizeCtl) < 0)     Thread.yield();
 else     if (UNSAFE.compareAndSwapInt(this,sizeCtlOffset,sc,-1)) {
      try {
        if ((tab=table) == null) {
          int n=(sc > 0) ? sc : DEFAULT_CAPACITY;
          tab=table=new Node[n];
          sc=n - (n >>> 2);
        }
      }
  finally {
        sizeCtl=sc;
      }
      break;
    }
  }
  return tab;
}

private final Node [ ] initTable ( ) { Node [ ] tab ; int sc ; while ( ( tab = table ) == null ) { if ( ( sc = sizeCtl ) < 0 ) Thread . yield ( ) ; else if ( UNSAFE . compareAndSwapInt ( this , sizeCtlOffset , sc , - 1 ) ) { try { if ( ( tab = table ) == null ) { int n = ( sc > 0 ) ? sc : DEFAULT_CAPACITY ; tab = table = new Node [ n ] ; sc = n - ( n > > > 2 ) ; } } finally { sizeCtl = sc ; } break ; } } return tab ; }
initializes table , using the size recorded in sizectl .
