package kr.debop4j.core.guava.concurrency;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Monitor;
import java.util.List;
/**
* kr.debop4j.core.guava.concurrency.MonitorSample
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 12. 12. 10.
*/
public class MonitorSample {
private List<String> list = Lists.newArrayList();
private static final int MAX_SIZE = 10;
private Monitor monitor = new Monitor();
private Monitor.Guard listBelowCapacity =
new Monitor.Guard(monitor) {
@Override
public boolean isSatisfied() {
return (list.size() < MAX_SIZE);
}
};
private void addToList(String item) throws InterruptedException {
monitor.enterWhen(listBelowCapacity);
try {
list.add(item);
} finally {
monitor.leave();
}
}
}