import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IAtomicLong;
import com.hazelcast.core.ILock;
public class RaceFreeMember {
public static void main(String[] args) throws Exception {
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IAtomicLong number1 = hz.getAtomicLong("number1");
IAtomicLong number2 = hz.getAtomicLong("number2");
ILock lock = hz.getLock("lock");
System.out.println("Started");
for (int i = 0; i < 10000; i++) {
if (i % 100 == 0) {
System.out.println("at: " + i);
}
lock.lock();
try {
if (i % 2 == 0) {
long n1 = number1.get();
Thread.sleep(10);
long n2 = number2.get();
if (n1 - n2 != 0) {
System.out.println("Datarace detected!");
}
} else {
number1.incrementAndGet();
number2.incrementAndGet();
}
} finally {
lock.unlock();
}
}
System.out.println("Finished");
System.exit(0);
}
}