Guide to Guava | common.util.concurrent (#1528)

Code and Tests for common.util.concurrent package
This commit is contained in:
Devendra Tiwari
2017-03-29 02:18:47 +05:30
committed by Grzegorz Piwowarek
parent 6e2dcfcf59
commit 6fe778979a
4 changed files with 182 additions and 0 deletions
@@ -0,0 +1,61 @@
import com.google.common.util.concurrent.Monitor;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import static com.google.common.util.concurrent.Uninterruptibles.joinUninterruptibly;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MonitorUnitTests {
@Test
public void whenGaurdConditionIsTrue_IsSuccessful() {
Monitor monitor = new Monitor();
boolean enteredInCriticalSection = false;
Monitor.Guard gaurdCondition = monitor.newGuard(this::returnTrue);
if(monitor.enterIf(gaurdCondition)){
try{
System.out.println("Entered in critical section");
enteredInCriticalSection = true;
}finally {
monitor.leave();
}
}
Assert.assertTrue(enteredInCriticalSection);
}
@Test
public void whenGaurdConditionIsFalse_IsSuccessful() {
Monitor monitor = new Monitor();
boolean enteredInCriticalSection = false;
Monitor.Guard gaurdCondition = monitor.newGuard(this::returnFalse);
if(monitor.enterIf(gaurdCondition)){
try{
System.out.println("Entered in critical section");
enteredInCriticalSection = true;
}finally {
monitor.leave();
}
}
Assert.assertFalse(enteredInCriticalSection);
}
private boolean returnTrue(){
return true;
}
private boolean returnFalse(){
return false;
}
}