package org.sample;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class A {
public void hello
(String holderName
) { synchronized (o) {
for (int i = 0; i < 10; i++) {
System.
out.
println("hello " + holderName
); try {
}
}
}
}
}
private A a;
public A getA() {
return a;
}
this.a = a;
this.name = name;
}
@Override
public void run() {
a.hello(name);
}
}
public class Main {
A a = new A();
B b1 = new B(a, "b1");
B b2 = new B(a, "b2");
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(b1);
executorService.submit(b2);
}
}
cGFja2FnZSBvcmcuc2FtcGxlOwoKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZTsKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yczsKCmNsYXNzIEEgewoKICAgIE9iamVjdCBvID0gbmV3IE9iamVjdCgpOwoKICAgIHB1YmxpYyB2b2lkIGhlbGxvKFN0cmluZyBob2xkZXJOYW1lKSB7CiAgICAgICAgc3luY2hyb25pemVkIChvKSB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyAiICsgaG9sZGVyTmFtZSk7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCgxMDAwKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCmNsYXNzIEIgaW1wbGVtZW50cyBSdW5uYWJsZSB7CiAgICBwcml2YXRlIEEgYTsKICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7CgogICAgcHVibGljIEEgZ2V0QSgpIHsKICAgICAgICByZXR1cm4gYTsKICAgIH0KCgogICAgcHVibGljIEIoQSBhLCBTdHJpbmcgbmFtZSkgewogICAgICAgIHRoaXMuYSA9IGE7CiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKICAgIH0KCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICBhLmhlbGxvKG5hbWUpOwogICAgfQp9CgoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsKICAgICAgICBBIGEgPSBuZXcgQSgpOwogICAgICAgIEIgYjEgPSBuZXcgQihhLCAiYjEiKTsKICAgICAgICBCIGIyID0gbmV3IEIoYSwgImIyIik7CgogICAgICAgIEV4ZWN1dG9yU2VydmljZSBleGVjdXRvclNlcnZpY2UgPSBFeGVjdXRvcnMubmV3Q2FjaGVkVGhyZWFkUG9vbCgpOwogICAgICAgIGV4ZWN1dG9yU2VydmljZS5zdWJtaXQoYjEpOwogICAgICAgIFRocmVhZC5zbGVlcCgxMDAwKTsKICAgICAgICBhLm8gPSBuZXcgT2JqZWN0KCk7CiAgICAgICAgZXhlY3V0b3JTZXJ2aWNlLnN1Ym1pdChiMik7CiAgICB9Cn0=