/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
testThreadWait( ) ;
System .
out .
println ( Thread .
currentThread ( ) .
getName ( ) + " exiting" ) ; }
private static void testThreadWait
( ) throws Exception { System .
out .
println ( String .
format ( "%s execution started" , currentThread
) ) ; long waitMillis = 20000L;
try {
System .
out .
println ( String .
format ( "%s going for timed wait of %d millis" , currentThread, waitMillis
) ) ; System .
out .
println ( String .
format ( "%s timed wait over after %d millis" , currentThread, waitMillis
) ) ; }
System .
out .
println ( String .
format ( "%s execution ending" , currentThread
) ) ; } ) ;
thread1.setName ( "Thread-1" ) ;
System .
out .
println ( String .
format ( "%s execution started" , currentThread
) ) ; try {
System .
out .
println ( currentThread
+ " about to wait for " + thread1.
getName ( ) ) ; thread1.join ( ) ;
System .
out .
println ( String .
format ( "%s wait over for %s" , currentThread, thread1.
getName ( ) ) ) ; }
System .
out .
println ( String .
format ( "%s execution ending" , currentThread
) ) ; } ) ;
thread2.setName ( "Thread-2" ) ;
thread2.start ( ) ;
thread1.start ( ) ;
thread1.interrupt ( ) ;
thread2.interrupt ( ) ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgIHRlc3RUaHJlYWRXYWl0KCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0TmFtZSgpICsgIiBleGl0aW5nIik7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkV2FpdCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgIFRocmVhZCB0aHJlYWQxID0gbmV3IFRocmVhZCgoKSAtPiB7CiAgICAgICAgICAgIFN0cmluZyBjdXJyZW50VGhyZWFkID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXROYW1lKCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihTdHJpbmcuZm9ybWF0KCIlcyBleGVjdXRpb24gc3RhcnRlZCIsIGN1cnJlbnRUaHJlYWQpKTsKICAgICAgICAgICAgbG9uZyB3YWl0TWlsbGlzID0gMjAwMDBMOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVzIGdvaW5nIGZvciB0aW1lZCB3YWl0IG9mICVkIG1pbGxpcyIsIGN1cnJlbnRUaHJlYWQsIHdhaXRNaWxsaXMpKTsKICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCh3YWl0TWlsbGlzKTsKICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVzIHRpbWVkIHdhaXQgb3ZlciBhZnRlciAlZCBtaWxsaXMiLCBjdXJyZW50VGhyZWFkLCB3YWl0TWlsbGlzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVzIGV4ZWN1dGlvbiBlbmRpbmciLCBjdXJyZW50VGhyZWFkKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhyZWFkMS5zZXROYW1lKCJUaHJlYWQtMSIpOwoKICAgICAgICBUaHJlYWQgdGhyZWFkMiA9IG5ldyBUaHJlYWQoKCkgLT4gewogICAgICAgICAgICBTdHJpbmcgY3VycmVudFRocmVhZCA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0TmFtZSgpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3RyaW5nLmZvcm1hdCgiJXMgZXhlY3V0aW9uIHN0YXJ0ZWQiLCBjdXJyZW50VGhyZWFkKSk7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY3VycmVudFRocmVhZCArICIgYWJvdXQgdG8gd2FpdCBmb3IgIiArIHRocmVhZDEuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgIHRocmVhZDEuam9pbigpOwogICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3RyaW5nLmZvcm1hdCgiJXMgd2FpdCBvdmVyIGZvciAlcyIsIGN1cnJlbnRUaHJlYWQsIHRocmVhZDEuZ2V0TmFtZSgpKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVzIGV4ZWN1dGlvbiBlbmRpbmciLCBjdXJyZW50VGhyZWFkKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhyZWFkMi5zZXROYW1lKCJUaHJlYWQtMiIpOwoKICAgICAgICB0aHJlYWQyLnN0YXJ0KCk7CiAgICAgICAgdGhyZWFkMS5zdGFydCgpOwogICAgICAgIAogICAgICAgIFRocmVhZC5zbGVlcCgxMDAwKTsKICAgICAgICAKICAgICAgICB0aHJlYWQxLmludGVycnVwdCgpOwogICAgICAgIHRocmVhZDIuaW50ZXJydXB0KCk7CiAgICB9Cn0=