import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IAtomicLong;
import com.hazelcast.core.ISemaphore;
public class SemaphoreMember {
public static void main(String[] args) throws Exception {
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
ISemaphore semaphore = hz.getSemaphore("semaphore");
IAtomicLong resource = hz.getAtomicLong("resource");
for (int i = 0; i < 1000; i++) {
System.out.println("At iteration: " + i + ", Active Threads: " + resource.get());
semaphore.acquire();
try {
resource.incrementAndGet();
Thread.sleep(1000);
resource.decrementAndGet();
} finally {
semaphore.release();
}
}
System.out.println("Finished");
}
}