annotate src/treecms/tree/util/LockableReference.java @ 23:77a894c0b919

commit
author shoshi
date Thu, 09 Jun 2011 01:03:48 +0900
parents
children 68021f7091e1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
shoshi
parents:
diff changeset
1 package treecms.tree.util;
shoshi
parents:
diff changeset
2
shoshi
parents:
diff changeset
3 import java.util.concurrent.locks.ReentrantLock;
shoshi
parents:
diff changeset
4
shoshi
parents:
diff changeset
5 public class LockableReference<V>
shoshi
parents:
diff changeset
6 {
shoshi
parents:
diff changeset
7 private volatile V m_ref;
shoshi
parents:
diff changeset
8 private volatile ReentrantLock m_lock;
shoshi
parents:
diff changeset
9
shoshi
parents:
diff changeset
10 public LockableReference(V _ref)
shoshi
parents:
diff changeset
11 {
shoshi
parents:
diff changeset
12 m_ref = _ref;
shoshi
parents:
diff changeset
13 m_lock = new ReentrantLock();
shoshi
parents:
diff changeset
14 }
shoshi
parents:
diff changeset
15
shoshi
parents:
diff changeset
16 public V get()
shoshi
parents:
diff changeset
17 {
shoshi
parents:
diff changeset
18 m_lock.lock();
shoshi
parents:
diff changeset
19 V ref = m_ref;
shoshi
parents:
diff changeset
20 m_lock.unlock();
shoshi
parents:
diff changeset
21 return ref;
shoshi
parents:
diff changeset
22 }
shoshi
parents:
diff changeset
23
shoshi
parents:
diff changeset
24 public void put(V _ref)
shoshi
parents:
diff changeset
25 {
shoshi
parents:
diff changeset
26 m_lock.lock();
shoshi
parents:
diff changeset
27 m_ref = _ref;
shoshi
parents:
diff changeset
28 m_lock.unlock();
shoshi
parents:
diff changeset
29 }
shoshi
parents:
diff changeset
30
shoshi
parents:
diff changeset
31 public void lock()
shoshi
parents:
diff changeset
32 {
shoshi
parents:
diff changeset
33 m_lock.lock();
shoshi
parents:
diff changeset
34 }
shoshi
parents:
diff changeset
35
shoshi
parents:
diff changeset
36 public void unlock()
shoshi
parents:
diff changeset
37 {
shoshi
parents:
diff changeset
38 m_lock.unlock();
shoshi
parents:
diff changeset
39 }
shoshi
parents:
diff changeset
40 }