/* 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 {
private int value;
public synchronized int getValue() {
return this.value;
}
public synchronized void setValue(int value) {
this.value = value;
}
public static void main
(String[] args
) {
Ideone nts = new Ideone();
public void run() {
nts.setValue(5);
System.
out.
println("Thread Id " + Thread.
currentThread().
getId() + ", expected value is 5, value=" + nts.
getValue()); }
});
public void run() {
nts.setValue(10);
System.
out.
println("Thread Id " + Thread.
currentThread().
getId() + ", expected value is 10, value=" + nts.getValue());
}
});
public void run() {
nts.setValue(15);
System.
out.
println("Thread Id " + Thread.
currentThread().
getId() + ", expected value is 15, value=" + nts.getValue());
}
});
th1.start();
th2.start();
th3.start();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lIHsKCiAgICBwcml2YXRlIGludCB2YWx1ZTsKCiAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBnZXRWYWx1ZSgpIHsKICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0VmFsdWUoaW50IHZhbHVlKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCiAgICAgICAgSWRlb25lIG50cyA9IG5ldyBJZGVvbmUoKTsKCiAgICAgICAgVGhyZWFkIHRoMSA9IG5ldyBUaHJlYWQobmV3IFJ1bm5hYmxlKCkgewogICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgICAgICAgICBudHMuc2V0VmFsdWUoNSk7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRocmVhZCBJZCAiICsgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRJZCgpICsgIiwgZXhwZWN0ZWQgdmFsdWUgaXMgNSwgdmFsdWU9IiArIG50cy5nZXRWYWx1ZSgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBUaHJlYWQgdGgyID0gbmV3IFRocmVhZChuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgIG50cy5zZXRWYWx1ZSgxMCk7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRocmVhZCBJZCAiICsgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRJZCgpICsgIiwgZXhwZWN0ZWQgdmFsdWUgaXMgMTAsIHZhbHVlPSIKICAgICAgICAgICAgICAgICAgICAgICAgKyBudHMuZ2V0VmFsdWUoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgVGhyZWFkIHRoMyA9IG5ldyBUaHJlYWQobmV3IFJ1bm5hYmxlKCkgewogICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgICAgICAgICBudHMuc2V0VmFsdWUoMTUpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaHJlYWQgSWQgIiArIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0SWQoKSArICIsIGV4cGVjdGVkIHZhbHVlIGlzIDE1LCB2YWx1ZT0iCiAgICAgICAgICAgICAgICAgICAgICAgICsgbnRzLmdldFZhbHVlKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHRoMS5zdGFydCgpOwogICAgICAgIHRoMi5zdGFydCgpOwogICAgICAgIHRoMy5zdGFydCgpOwogICAgfQoKfQ==