Java / Java Multithreading
Explain Guarded Blocks in Java.
Guarded block is a mechanism of coordinating the execution of multiple threads in a multithreaded environment. Guarded block keeps checking for a particular condition to become true and only in that case the actual execution of the thread resumes.
Guarded blocks are of 2 types, synchronized guarded block and non-synchronized guarded block.
In synchronized guarded block, if the condition is false then the synchronized block simply calls the Object.wait() method to release the acquired monitor on that object and leaves the CPU to be used by other thread.
public synchronized void guardedBlockExample() { while(!sharedFlag) { try { wait(); } catch (InterruptedException e) {} } System.out.print("Shared flag is ON. The execution will continue now!"); }
In non-synchronized guarded block, execution is controlled to keep executing a blank loop until the condition becomes true. This approach has an obvious disadvantage of wasting the precious CPU time, which could have been better utilized by some other threads.
public void guardedBlockExample() { while(!sharedFlag) { // empty loop that breaks when condition is true. } System.out.println("Shared Flag is ON. Resuming execution."); }
More Related questions...