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();
+	}
+}