public synchronized void bootstrap(){
  if (!isRunning() || System.currentTimeMillis() - lastBootstrap < DHTConstants.BOOTSTRAP_MIN_INTERVAL) {
    return;
  }
  if (!bootstrapping.compareAndSet(BootstrapState.NONE,BootstrapState.FILL))   return;
  if (useRouterBootstrapping && node.getNumEntriesInRoutingTable() < DHTConstants.USE_BT_ROUTER_IF_LESS_THAN_X_PEERS) {
    routerBootstrap();
  }
 else {
    fillHomeBuckets(Collections.emptyList());
  }
}

public synchronized void bootstrap ( ) { if ( ! isRunning ( ) || System . currentTimeMillis ( ) - lastBootstrap < DHTConstants . BOOTSTRAP_MIN_INTERVAL ) { return ; } if ( ! bootstrapping . compareAndSet ( BootstrapState . NONE , BootstrapState . FILL ) ) return ; if ( useRouterBootstrapping && node . getNumEntriesInRoutingTable ( ) < DHTConstants . USE_BT_ROUTER_IF_LESS_THAN_X_PEERS ) { routerBootstrap ( ) ; } else { fillHomeBuckets ( Collections . emptyList ( ) ) ; } }
initiates a bootstrap . this function bootstraps with router . bittorrent . com if there are less than 10 peers in the routing table . if there are more then a lookup on our own id is initiated . if the either task is finished than it will try to fill the buckets .
