package kr.debop4j.core.guava.concurrency; import com.google.common.collect.Lists; import java.util.List; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; /** * kr.debop4j.core.guava.concurrency.ReenterantLockSample * * @author 배성혁 ( sunghyouk.bae@gmail.com ) * @since 12. 12. 10. */ public class ReenterantLockSample { private List<String> list = Lists.newArrayList(); private static final int MAX_SIZE = 10; private ReentrantLock rLock = new ReentrantLock(); private Condition listAtCapacity = rLock.newCondition(); public void addList(String item) throws InterruptedException { rLock.lock(); try { while (list.size() == MAX_SIZE) { listAtCapacity.await(); } list.add(item); } finally { rLock.unlock(); } } }