ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/ReadHoldingWriteLock.java
(Generate patch)

Comparing jsr166/src/test/loops/ReadHoldingWriteLock.java (file contents):
Revision 1.2 by dl, Mon May 9 19:33:30 2005 UTC vs.
Revision 1.7 by jsr166, Thu Jan 15 18:34:19 2015 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   */
6   import java.util.concurrent.locks.*;
7  
# Line 26 | Line 26 | class ReadHoldingWriteLock {
26      /**
27       * Readlocks succeed after a writing thread unlocks
28       */
29 <    public void testReadAfterWriteLock() throws Exception {
30 <        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
31 <        lock.writeLock().lock();
32 <        Thread t1 = new Thread(new Runnable() {
29 >    public void testReadAfterWriteLock() throws Exception {
30 >        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
31 >        lock.writeLock().lock();
32 >        Thread t1 = new Thread(new Runnable() {
33                  public void run() {
34                      lock.readLock().lock();
35                      lock.readLock().unlock();
36 <                }
37 <            });
38 <        Thread t2 = new Thread(new Runnable() {
36 >                }
37 >            });
38 >        Thread t2 = new Thread(new Runnable() {
39                  public void run() {
40                      lock.readLock().lock();
41                      lock.readLock().unlock();
42 <                }
43 <            });
42 >                }
43 >            });
44  
45          t1.start();
46          t2.start();
# Line 50 | Line 50 | class ReadHoldingWriteLock {
50          t2.join(MEDIUM_DELAY_MS);
51          assertTrue(!t1.isAlive());
52          assertTrue(!t2.isAlive());
53 <        
54 <    }
53 >
54 >    }
55  
56      /**
57       * Read trylock succeeds if write locked by current thread
58       */
59 <    public void testReadHoldingWriteLock()throws Exception {
60 <        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
61 <        lock.writeLock().lock();
59 >    public void testReadHoldingWriteLock()throws Exception {
60 >        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
61 >        lock.writeLock().lock();
62          assertTrue(lock.readLock().tryLock());
63          lock.readLock().unlock();
64          lock.writeLock().unlock();
65 <    }
65 >    }
66  
67      /**
68       * Read lock succeeds if write locked by current thread even if
69       * other threads are waiting
70       */
71 <    public void testReadHoldingWriteLock2() throws Exception{
72 <        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
73 <        lock.writeLock().lock();
74 <        Thread t1 = new Thread(new Runnable() {
71 >    public void testReadHoldingWriteLock2() throws Exception {
72 >        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
73 >        lock.writeLock().lock();
74 >        Thread t1 = new Thread(new Runnable() {
75                  public void run() {
76                      lock.readLock().lock();
77                      lock.readLock().unlock();
78 <                }
79 <            });
80 <        Thread t2 = new Thread(new Runnable() {
78 >                }
79 >            });
80 >        Thread t2 = new Thread(new Runnable() {
81                  public void run() {
82                      lock.readLock().lock();
83                      lock.readLock().unlock();
84 <                }
85 <            });
86 <        
84 >                }
85 >            });
86 >
87          t1.start();
88          t2.start();
89          lock.readLock().lock();
# Line 96 | Line 96 | class ReadHoldingWriteLock {
96          t2.join(MEDIUM_DELAY_MS);
97          assertTrue(!t1.isAlive());
98          assertTrue(!t2.isAlive());
99 <    }
99 >    }
100  
101      /**
102       * Fair Read trylock succeeds if write locked by current thread
103       */
104 <    public void testReadHoldingWriteLockFair() throws Exception{
105 <        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
106 <        lock.writeLock().lock();
104 >    public void testReadHoldingWriteLockFair() throws Exception {
105 >        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
106 >        lock.writeLock().lock();
107          assertTrue(lock.readLock().tryLock());
108          lock.readLock().unlock();
109          lock.writeLock().unlock();
110 <    }
110 >    }
111  
112      /**
113       * Fair Read lock succeeds if write locked by current thread even if
114       * other threads are waiting
115       */
116 <    public void testReadHoldingWriteLockFair2() throws Exception {
117 <        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
118 <        lock.writeLock().lock();
119 <        Thread t1 = new Thread(new Runnable() {
116 >    public void testReadHoldingWriteLockFair2() throws Exception {
117 >        final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
118 >        lock.writeLock().lock();
119 >        Thread t1 = new Thread(new Runnable() {
120                  public void run() {
121                      lock.readLock().lock();
122                      lock.readLock().unlock();
123 <                }
124 <            });
125 <        Thread t2 = new Thread(new Runnable() {
123 >                }
124 >            });
125 >        Thread t2 = new Thread(new Runnable() {
126                  public void run() {
127                      lock.readLock().lock();
128                      lock.readLock().unlock();
129 <                }
130 <            });
129 >                }
130 >            });
131  
132          t1.start();
133          t2.start();
# Line 141 | Line 141 | class ReadHoldingWriteLock {
141          t2.join(MEDIUM_DELAY_MS);
142          assertTrue(!t1.isAlive());
143          assertTrue(!t2.isAlive());
144 <        
145 <
146 <    }
144 >    }
145   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines