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

Comparing jsr166/src/test/tck/AbstractQueuedSynchronizerTest.java (file contents):
Revision 1.7 by dl, Fri Jan 2 21:06:38 2004 UTC vs.
Revision 1.8 by dl, Sun Jan 4 00:57:21 2004 UTC

# Line 42 | Line 42 | public class AbstractQueuedSynchronizerT
42                  return true;
43              }
44              
45 <            public void checkConditionAccess(Thread thread, boolean waiting) {
45 >            public void checkConditionAccess(Thread thread) {
46                  if (getState() == 0) throw new IllegalMonitorStateException();
47              }
48              
# Line 52 | Line 52 | public class AbstractQueuedSynchronizerT
52                  s.defaultReadObject();
53                  setState(0); // reset to unlocked state
54              }
55 +
56          }
57          
58          private final Sync sync = new Sync();
# Line 71 | Line 72 | public class AbstractQueuedSynchronizerT
72          public Condition newCondition() { return sync.newCondition(); }
73          public boolean isLocked() { return sync.isLocked(); }
74          public boolean hasQueuedThreads() { return sync.hasQueuedThreads(); }
75 +        public boolean hasContended() { return sync.hasContended(); }
76      }
77  
78      /**
# Line 147 | Line 149 | public class AbstractQueuedSynchronizerT
149              t1.join();
150              t2.join();
151          } catch(Exception e){
152 +            unexpectedException();
153 +        }
154 +    }
155 +
156 +
157 +    /**
158 +     * hasContended reports whether there has been contention
159 +     */
160 +    public void testhasContended() {
161 +        final Mutex lock = new Mutex();
162 +        Thread t1 = new Thread(new InterruptedLockRunnable(lock));
163 +        Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
164 +        try {
165 +            assertFalse(lock.hasContended());
166 +            lock.lock();
167 +            t1.start();
168 +            Thread.sleep(SHORT_DELAY_MS);
169 +            assertTrue(lock.hasContended());
170 +            t2.start();
171 +            Thread.sleep(SHORT_DELAY_MS);
172 +            assertTrue(lock.hasContended());
173 +            t1.interrupt();
174 +            Thread.sleep(SHORT_DELAY_MS);
175 +            assertTrue(lock.hasContended());
176 +            lock.unlock();
177 +            Thread.sleep(SHORT_DELAY_MS);
178 +            assertTrue(lock.hasContended());
179 +            t1.join();
180 +            t2.join();
181 +        } catch(Exception e){
182              unexpectedException();
183          }
184      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines