ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/RWMap.java
Revision: 1.1
Committed: Mon May 2 19:19:38 2005 UTC (19 years ago) by dl
Branch: MAIN
Log Message:
Put misc performance tests into CVS

File Contents

# Content
1 import java.util.*;
2 import java.util.concurrent.*;
3 import java.util.concurrent.locks.*;
4
5
6 /**
7 * This is an incomplete implementation of a wrapper class
8 * that places read-write locks around unsynchronized Maps.
9 * Exists as a sample input for MapLoops test.
10 */
11
12 public class RWMap implements Map {
13 private final Map m;
14 private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
15
16 public RWMap(Map m) {
17 if (m == null)
18 throw new NullPointerException();
19 this.m = m;
20 }
21
22 public RWMap() {
23 this(new TreeMap()); // use TreeMap by default
24 }
25
26 public int size() {
27 rwl.readLock().lock(); try {return m.size();} finally { rwl.readLock().unlock(); }
28 }
29 public boolean isEmpty(){
30 rwl.readLock().lock(); try {return m.isEmpty();} finally { rwl.readLock().unlock(); }
31 }
32
33 public Object get(Object key) {
34 rwl.readLock().lock(); try {return m.get(key);} finally { rwl.readLock().unlock(); }
35 }
36
37 public boolean containsKey(Object key) {
38 rwl.readLock().lock(); try {return m.containsKey(key);} finally { rwl.readLock().unlock(); }
39 }
40 public boolean containsValue(Object value){
41 rwl.readLock().lock(); try {return m.containsValue(value);} finally { rwl.readLock().unlock(); }
42 }
43
44
45 public Set keySet() { // Not implemented
46 return m.keySet();
47 }
48
49 public Set entrySet() { // Not implemented
50 return m.entrySet();
51 }
52
53 public Collection values() { // Not implemented
54 return m.values();
55 }
56
57 public boolean equals(Object o) {
58 rwl.readLock().lock(); try {return m.equals(o);} finally { rwl.readLock().unlock(); }
59 }
60 public int hashCode() {
61 rwl.readLock().lock(); try {return m.hashCode();} finally { rwl.readLock().unlock(); }
62 }
63 public String toString() {
64 rwl.readLock().lock(); try {return m.toString();} finally { rwl.readLock().unlock(); }
65 }
66
67
68
69 public Object put(Object key, Object value) {
70 rwl.writeLock().lock(); try {return m.put(key, value);} finally { rwl.writeLock().unlock(); }
71 }
72 public Object remove(Object key) {
73 rwl.writeLock().lock(); try {return m.remove(key);} finally { rwl.writeLock().unlock(); }
74 }
75 public void putAll(Map map) {
76 rwl.writeLock().lock(); try {m.putAll(map);} finally { rwl.writeLock().unlock(); }
77 }
78 public void clear() {
79 rwl.writeLock().lock(); try {m.clear();} finally { rwl.writeLock().unlock(); }
80 }
81
82 }