/* package whatever; // don't place package name! */
import java.util.concurrent.*;
import java.util.concurrent.locks.ReentrantLock;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static class DemoClass {
public int count =0;
public ReentrantLock lock = new ReentrantLock();
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
ExecutorService executor = Executors.newFixedThreadPool(2);
DemoClass demoClass = new DemoClass();
int i=0;
for(;i<=10000;i++) {
executor.submit(demoClass::increment);
}
executor.shutdown();
executor.awaitTermination(2, TimeUnit.SECONDS);
demoClass.lock.lock();
try {
System.
out.
println( demoClass.
count); // 10000 } finally {
demoClass.lock.unlock();
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50Lio7CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CnN0YXRpYyBjbGFzcyBEZW1vQ2xhc3MgewogICAgcHVibGljIGludCBjb3VudCA9MDsKICAgIHB1YmxpYyBSZWVudHJhbnRMb2NrIGxvY2sgPSBuZXcgUmVlbnRyYW50TG9jaygpOwogICAgcHVibGljIHZvaWQgaW5jcmVtZW50KCkgewogICAgICAgIGxvY2subG9jaygpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgbG9jay51bmxvY2soKTsKICAgICAgICB9CiAgICB9Cn0KCQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsKICAgICAgICBFeGVjdXRvclNlcnZpY2UgZXhlY3V0b3IgPSBFeGVjdXRvcnMubmV3Rml4ZWRUaHJlYWRQb29sKDIpOwogICAgICAgIERlbW9DbGFzcyBkZW1vQ2xhc3MgPSBuZXcgRGVtb0NsYXNzKCk7CiAgICAgICAgaW50IGk9MDsKICAgICAgICBmb3IoO2k8PTEwMDAwO2krKykgewogICAgICAgICAgICBleGVjdXRvci5zdWJtaXQoZGVtb0NsYXNzOjppbmNyZW1lbnQpOwogICAgICAgIH0KCiAgICAgICAgZXhlY3V0b3Iuc2h1dGRvd24oKTsKICAgICAgICBleGVjdXRvci5hd2FpdFRlcm1pbmF0aW9uKDIsIFRpbWVVbml0LlNFQ09ORFMpOwoKICAgICAgICBkZW1vQ2xhc3MubG9jay5sb2NrKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAJU3lzdGVtLm91dC5wcmludGxuKCBkZW1vQ2xhc3MuY291bnQpOyAgLy8gMTAwMDAKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICBkZW1vQ2xhc3MubG9jay51bmxvY2soKTsKICAgICAgICB9CiAgICB9Cn0=