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

# User Rev Content
1 dl 1.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     }