private static void executeSemaphore() { System.out.println("### Semaphore Execution Started... ###"); ISemaphore semaphore = context.getBean("semaphore", ISemaphore.class); semaphore.init(5); System.out.println("Semaphore initialized with 5."); try { semaphore.acquire(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Semaphore acquired once."); System.out.println("Available semaphore permits: " + semaphore.availablePermits()); semaphore.release(); System.out.println("Semaphore released."); System.out.println("Available semaphore permits: " + semaphore.availablePermits() + "\n"); }
@ManagedAnnotation(value = "release", operation = true) @ManagedDescription("Releases the given number of permits, increasing the number of available permits by that amount") public void release(int permits) { managedObject.release(permits); }
@ManagedAnnotation(value = "release", operation = true) @ManagedDescription("Releases the given number of permits, increasing the number of available permits by that amount") public void release(int permits) { managedObject.release(permits); }
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"); } }