1
6
7 import java.lang.ref.*;
8
9 public class CacheRef {
10
11
12
13 transient SoftReference ref = null;
14 transient private Object lock = null;
15
16 CacheRef() {}
17
18 public CacheRef(Object target) {
19 ref = new SoftReference(target);
20 }
21
22 public void set(Object target) {
23 ref = new SoftReference(target);
24 }
25
26 public Object get() {
27 if (ref==null) return(null);
28 return(ref.get());
29 }
30
31
39 public boolean lock(boolean hold) {
40 if (hold) {
41 if (ref==null) return(false);
42 lock = ref.get();
43 return(lock!=null);
44 }
45 lock = null;
46 return(true);
47 }
48
49 public static void uses(Object user, CacheRef target) {
50 }
51 }
52