import java.util.concurrent.CountDownLatch ;
class b {
static final CountDownLatch countdown = new CountDownLatch( 3 ) ;
public static void main
( String [ ] args
) {
for ( int i = 0 ; i < 3 ; ++ i) {
public void run( ) {
System .
out .
printf ( "Starting on %d other threads.\n " ,
countdown.getCount ( ) ) ;
countdown.countDown ( ) ;
System .
out .
printf ( "new on %d other threads.\n " ,
countdown.getCount ( ) ) ;
try {
countdown.await ( ) ; // waits until everyone reaches this
// point
// System.out.println("Go again : "
// +countdown.getCount());
}
}
} ;
t.start ( ) ;
}
}
}
aW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoOwoKY2xhc3MgYiB7CnN0YXRpYyBmaW5hbCBDb3VudERvd25MYXRjaCBjb3VudGRvd24gPSBuZXcgQ291bnREb3duTGF0Y2goMyk7CgpwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICBUaHJlYWQgdCA9IG5ldyBUaHJlYWQoKSB7CiAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJTdGFydGluZyBvbiAlZCBvdGhlciB0aHJlYWRzLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRkb3duLmdldENvdW50KCkpOwogICAgICAgICAgICAgICAgY291bnRkb3duLmNvdW50RG93bigpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIm5ldyBvbiAlZCBvdGhlciB0aHJlYWRzLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRkb3duLmdldENvdW50KCkpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBjb3VudGRvd24uYXdhaXQoKTsgLy8gd2FpdHMgdW50aWwgZXZlcnlvbmUgcmVhY2hlcyB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb2ludAogICAgICAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiR28gYWdhaW4gOiAiCiAgICAgICAgICAgICAgICAgICAgLy8gK2NvdW50ZG93bi5nZXRDb3VudCgpKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHQuc3RhcnQoKTsKCiAgICB9CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkdvIik7Cn0KCn0=