/* 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
{
{
@Override
public void run() {
synchronized (globalLock) {
System.
out.
println("thread1 grabbed the lock."); try {
e.printStackTrace();
}
System.
out.
println("thread1 returned the lock."); }
}
});
t1.start();
@Override
public void run() {
System.
out.
println("thread2 is waiting for the lock..."); synchronized (globalLock) {
System.
out.
println("thread2 got the lock"); }
}
});
t2.start();
t1.join();
t2.join();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KICAgIHsKICAgICAgICBmaW5hbCBPYmplY3QgZ2xvYmFsTG9jayA9IG5ldyBPYmplY3QoKTsKICAgICAgICBUaHJlYWQgdDEgID0gbmV3IFRocmVhZChuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKGdsb2JhbExvY2spIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRocmVhZDEgZ3JhYmJlZCB0aGUgbG9jay4iKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoMzAwMCk7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRocmVhZDEgcmV0dXJuZWQgdGhlIGxvY2suIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB0MS5zdGFydCgpOwoKICAgICAgICBUaHJlYWQuc2xlZXAoMjAwKTsKCiAgICAgICAgVGhyZWFkIHQyID0gbmV3IFRocmVhZChuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRocmVhZDIgaXMgd2FpdGluZyBmb3IgdGhlIGxvY2suLi4iKTsKICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAoZ2xvYmFsTG9jaykgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidGhyZWFkMiBnb3QgdGhlIGxvY2siKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHQyLnN0YXJ0KCk7CiAgICAgICAgdDEuam9pbigpOwogICAgICAgIHQyLmpvaW4oKTsKICAgIH0KfQ==