Mercurial > hg > Members > shoshi > TreeCMSv2
diff src/treecms/tree/util/LockableReference.java @ 23:77a894c0b919
commit
author | shoshi |
---|---|
date | Thu, 09 Jun 2011 01:03:48 +0900 |
parents | |
children | 68021f7091e1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/treecms/tree/util/LockableReference.java Thu Jun 09 01:03:48 2011 +0900 @@ -0,0 +1,40 @@ +package treecms.tree.util; + +import java.util.concurrent.locks.ReentrantLock; + +public class LockableReference<V> +{ + private volatile V m_ref; + private volatile ReentrantLock m_lock; + + public LockableReference(V _ref) + { + m_ref = _ref; + m_lock = new ReentrantLock(); + } + + public V get() + { + m_lock.lock(); + V ref = m_ref; + m_lock.unlock(); + return ref; + } + + public void put(V _ref) + { + m_lock.lock(); + m_ref = _ref; + m_lock.unlock(); + } + + public void lock() + { + m_lock.lock(); + } + + public void unlock() + { + m_lock.unlock(); + } +}