starts the race . note that the race only starts when all racers are ready , i.e. all waiting at the start barrier , and for that to happen there is a 30 seconds timeout . concode_field_sep AtomicInteger abortedPosition concode_elem_sep AtomicInteger donePosition concode_elem_sep RaceBroadcaster broadcaster concode_elem_sep CountDownLatch endCountDownLatch concode_elem_sep RaceResult result concode_elem_sep int number concode_elem_sep Map<String,String> environment concode_elem_sep CyclicBarrier startBarrier concode_elem_sep Racer racer concode_elem_sep Racer racer2 concode_elem_sep RaceResults results concode_elem_sep Racer racer1 concode_elem_sep Racer racer4 concode_elem_sep Racer racer3 concode_field_sep void broadcast concode_elem_sep void aborted concode_elem_sep void processResult concode_elem_sep void run concode_elem_sep Map<String,String> getEnvironment concode_elem_sep void startEngines concode_elem_sep void done concode_elem_sep int getNumber concode_elem_sep void ready concode_elem_sep void reset concode_elem_sep void registerRacers concode_elem_sep Racer getRacer concode_elem_sep void awaitEnd
void function ( ) { broadcaster . readySetGo ( ) ; startBarrier . await ( 30 , TimeUnit . SECONDS ) ; }