[cvs] / jsr166 / src / test / tck / AbstractQueuedSynchronizerTest.java Repository:
ViewVC logotype

Diff of /jsr166/src/test/tck/AbstractQueuedSynchronizerTest.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.32, Mon Nov 30 08:31:09 2009 UTC revision 1.40, Fri May 6 16:43:45 2011 UTC
# Line 1  Line 1 
1  /*  /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at   * Expert Group and released to the public domain, as explained at
4   * http://creativecommons.org/licenses/publicdomain   * http://creativecommons.org/publicdomain/zero/1.0/
5   * Other contributors include Andrew Wright, Jeffrey Hayes,   * Other contributors include Andrew Wright, Jeffrey Hayes,
6   * Pat Fisher, Mike Judd.   * Pat Fisher, Mike Judd.
7   */   */
# Line 34  Line 34 
34          public boolean isHeldExclusively() { return getState() == 1; }          public boolean isHeldExclusively() { return getState() == 1; }
35    
36          public boolean tryAcquire(int acquires) {          public boolean tryAcquire(int acquires) {
37              assertTrue(acquires == 1);              assertEquals(1, acquires);
38              return compareAndSetState(0, 1);              return compareAndSetState(0, 1);
39          }          }
40    
# Line 44  Line 44 
44              return true;              return true;
45          }          }
46    
47          public AbstractQueuedSynchronizer.ConditionObject newCondition() { return new AbstractQueuedSynchronizer.ConditionObject(); }          public AbstractQueuedSynchronizer.ConditionObject newCondition() {
48                return new AbstractQueuedSynchronizer.ConditionObject();
49            }
50    
51      }      }
52    
# Line 129  Line 131 
131          assertFalse(sync.hasQueuedThreads());          assertFalse(sync.hasQueuedThreads());
132          sync.acquire(1);          sync.acquire(1);
133          t1.start();          t1.start();
134          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
135          assertTrue(sync.hasQueuedThreads());          assertTrue(sync.hasQueuedThreads());
136          t2.start();          t2.start();
137          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
138          assertTrue(sync.hasQueuedThreads());          assertTrue(sync.hasQueuedThreads());
139          t1.interrupt();          t1.interrupt();
140          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
141          assertTrue(sync.hasQueuedThreads());          assertTrue(sync.hasQueuedThreads());
142          sync.release(1);          sync.release(1);
143          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
144          assertFalse(sync.hasQueuedThreads());          assertFalse(sync.hasQueuedThreads());
145          t1.join();          t1.join();
146          t2.join();          t2.join();
# Line 166  Line 168 
168          assertFalse(sync.isQueued(t2));          assertFalse(sync.isQueued(t2));
169          sync.acquire(1);          sync.acquire(1);
170          t1.start();          t1.start();
171          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
172          assertTrue(sync.isQueued(t1));          assertTrue(sync.isQueued(t1));
173          t2.start();          t2.start();
174          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
175          assertTrue(sync.isQueued(t1));          assertTrue(sync.isQueued(t1));
176          assertTrue(sync.isQueued(t2));          assertTrue(sync.isQueued(t2));
177          t1.interrupt();          t1.interrupt();
178          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
179          assertFalse(sync.isQueued(t1));          assertFalse(sync.isQueued(t1));
180          assertTrue(sync.isQueued(t2));          assertTrue(sync.isQueued(t2));
181          sync.release(1);          sync.release(1);
182          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
183          assertFalse(sync.isQueued(t1));          assertFalse(sync.isQueued(t1));
184          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
185          assertFalse(sync.isQueued(t2));          assertFalse(sync.isQueued(t2));
186          t1.join();          t1.join();
187          t2.join();          t2.join();
# Line 195  Line 197 
197          assertNull(sync.getFirstQueuedThread());          assertNull(sync.getFirstQueuedThread());
198          sync.acquire(1);          sync.acquire(1);
199          t1.start();          t1.start();
200          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
201          assertEquals(t1, sync.getFirstQueuedThread());          assertEquals(t1, sync.getFirstQueuedThread());
202          t2.start();          t2.start();
203          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
204          assertEquals(t1, sync.getFirstQueuedThread());          assertEquals(t1, sync.getFirstQueuedThread());
205          t1.interrupt();          t1.interrupt();
206          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
207          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
208          assertEquals(t2, sync.getFirstQueuedThread());          assertEquals(t2, sync.getFirstQueuedThread());
209          sync.release(1);          sync.release(1);
210          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
211          assertNull(sync.getFirstQueuedThread());          assertNull(sync.getFirstQueuedThread());
212          t1.join();          t1.join();
213          t2.join();          t2.join();
# Line 222  Line 224 
224          assertFalse(sync.hasContended());          assertFalse(sync.hasContended());
225          sync.acquire(1);          sync.acquire(1);
226          t1.start();          t1.start();
227          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
228          assertTrue(sync.hasContended());          assertTrue(sync.hasContended());
229          t2.start();          t2.start();
230          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
231          assertTrue(sync.hasContended());          assertTrue(sync.hasContended());
232          t1.interrupt();          t1.interrupt();
233          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
234          assertTrue(sync.hasContended());          assertTrue(sync.hasContended());
235          sync.release(1);          sync.release(1);
236          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
237          assertTrue(sync.hasContended());          assertTrue(sync.hasContended());
238          t1.join();          t1.join();
239          t2.join();          t2.join();
# Line 248  Line 250 
250          sync.acquire(1);          sync.acquire(1);
251          assertTrue(sync.getQueuedThreads().isEmpty());          assertTrue(sync.getQueuedThreads().isEmpty());
252          t1.start();          t1.start();
253          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
254          assertTrue(sync.getQueuedThreads().contains(t1));          assertTrue(sync.getQueuedThreads().contains(t1));
255          t2.start();          t2.start();
256          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
257          assertTrue(sync.getQueuedThreads().contains(t1));          assertTrue(sync.getQueuedThreads().contains(t1));
258          assertTrue(sync.getQueuedThreads().contains(t2));          assertTrue(sync.getQueuedThreads().contains(t2));
259          t1.interrupt();          t1.interrupt();
260          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
261          assertFalse(sync.getQueuedThreads().contains(t1));          assertFalse(sync.getQueuedThreads().contains(t1));
262          assertTrue(sync.getQueuedThreads().contains(t2));          assertTrue(sync.getQueuedThreads().contains(t2));
263          sync.release(1);          sync.release(1);
264          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
265          assertTrue(sync.getQueuedThreads().isEmpty());          assertTrue(sync.getQueuedThreads().isEmpty());
266          t1.join();          t1.join();
267          t2.join();          t2.join();
# Line 276  Line 278 
278          sync.acquire(1);          sync.acquire(1);
279          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
280          t1.start();          t1.start();
281          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
282          assertTrue(sync.getExclusiveQueuedThreads().contains(t1));          assertTrue(sync.getExclusiveQueuedThreads().contains(t1));
283          t2.start();          t2.start();
284          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
285          assertTrue(sync.getExclusiveQueuedThreads().contains(t1));          assertTrue(sync.getExclusiveQueuedThreads().contains(t1));
286          assertTrue(sync.getExclusiveQueuedThreads().contains(t2));          assertTrue(sync.getExclusiveQueuedThreads().contains(t2));
287          t1.interrupt();          t1.interrupt();
288          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
289          assertFalse(sync.getExclusiveQueuedThreads().contains(t1));          assertFalse(sync.getExclusiveQueuedThreads().contains(t1));
290          assertTrue(sync.getExclusiveQueuedThreads().contains(t2));          assertTrue(sync.getExclusiveQueuedThreads().contains(t2));
291          sync.release(1);          sync.release(1);
292          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
293          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
294          t1.join();          t1.join();
295          t2.join();          t2.join();
# Line 304  Line 306 
306          sync.acquire(1);          sync.acquire(1);
307          assertTrue(sync.getSharedQueuedThreads().isEmpty());          assertTrue(sync.getSharedQueuedThreads().isEmpty());
308          t1.start();          t1.start();
309          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
310          assertTrue(sync.getSharedQueuedThreads().isEmpty());          assertTrue(sync.getSharedQueuedThreads().isEmpty());
311          t2.start();          t2.start();
312          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
313          assertTrue(sync.getSharedQueuedThreads().isEmpty());          assertTrue(sync.getSharedQueuedThreads().isEmpty());
314          t1.interrupt();          t1.interrupt();
315          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
316          assertTrue(sync.getSharedQueuedThreads().isEmpty());          assertTrue(sync.getSharedQueuedThreads().isEmpty());
317          sync.release(1);          sync.release(1);
318          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
319          assertTrue(sync.getSharedQueuedThreads().isEmpty());          assertTrue(sync.getSharedQueuedThreads().isEmpty());
320          t1.join();          t1.join();
321          t2.join();          t2.join();
# Line 327  Line 329 
329          sync.acquire(1);          sync.acquire(1);
330          Thread t = new Thread(new CheckedInterruptedRunnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
331              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
332                  sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000L * 1000L);                  sync.tryAcquireNanos(1, MILLISECONDS.toNanos(MEDIUM_DELAY_MS));
333              }});              }});
334    
335          t.start();          t.start();
336          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
337          t.interrupt();          t.interrupt();
338          t.join();          t.join();
339      }      }
# Line 345  Line 347 
347          sync.acquire(1);          sync.acquire(1);
348          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
349              public void realRun() {              public void realRun() {
350                  threadAssertFalse(sync.tryAcquire(1));                  assertFalse(sync.tryAcquire(1));
351              }});              }});
352    
353          t.start();          t.start();
# Line 361  Line 363 
363          sync.acquire(1);          sync.acquire(1);
364          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
365              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
366                  threadAssertFalse(sync.tryAcquireNanos(1, SHORT_DELAY_MS * 1000L * 1000L));                  long nanos = MILLISECONDS.toNanos(SHORT_DELAY_MS);
367                    assertFalse(sync.tryAcquireNanos(1, nanos));
368              }});              }});
369    
370          t.start();          t.start();
# Line 382  Line 385 
385          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
386              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
387                  sync.acquire(1);                  sync.acquire(1);
388                  Thread.sleep(SMALL_DELAY_MS);                  delay(SMALL_DELAY_MS);
389                  sync.release(1);                  sync.release(1);
390              }});              }});
391    
392          t.start();          t.start();
393          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
394          assertTrue(sync.isHeldExclusively());          assertTrue(sync.isHeldExclusively());
395          t.join();          t.join();
396          assertFalse(sync.isHeldExclusively());          assertFalse(sync.isHeldExclusively());
# Line 403  Line 406 
406          Thread t = new Thread(new InterruptedSyncRunnable(sync));          Thread t = new Thread(new InterruptedSyncRunnable(sync));
407    
408          t.start();          t.start();
409          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
410          t.interrupt();          t.interrupt();
411          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
412          sync.release(1);          sync.release(1);
413          t.join();          t.join();
414      }      }
# Line 418  Line 421 
421          sync.acquireInterruptibly(1);          sync.acquireInterruptibly(1);
422          Thread t = new Thread(new InterruptedSyncRunnable(sync));          Thread t = new Thread(new InterruptedSyncRunnable(sync));
423          t.start();          t.start();
424          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
425          t.interrupt();          t.interrupt();
426          assertTrue(sync.isHeldExclusively());          assertTrue(sync.isHeldExclusively());
427          t.join();          t.join();
# Line 508  Line 511 
511              }});              }});
512    
513          t.start();          t.start();
514          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
515          sync.acquire(1);          sync.acquire(1);
516          c.signal();          c.signal();
517          sync.release(1);          sync.release(1);
# Line 641  Line 644 
644          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
645              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
646                  sync.acquire(1);                  sync.acquire(1);
647                  threadAssertFalse(sync.hasWaiters(c));                  assertFalse(sync.hasWaiters(c));
648                  threadAssertEquals(0, sync.getWaitQueueLength(c));                  assertEquals(0, sync.getWaitQueueLength(c));
649                  c.await();                  c.await();
650                  sync.release(1);                  sync.release(1);
651              }});              }});
652    
653          t.start();          t.start();
654          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
655          sync.acquire(1);          sync.acquire(1);
656          assertTrue(sync.hasWaiters(c));          assertTrue(sync.hasWaiters(c));
657          assertEquals(1, sync.getWaitQueueLength(c));          assertEquals(1, sync.getWaitQueueLength(c));
658          c.signal();          c.signal();
659          sync.release(1);          sync.release(1);
660          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
661          sync.acquire(1);          sync.acquire(1);
662          assertFalse(sync.hasWaiters(c));          assertFalse(sync.hasWaiters(c));
663          assertEquals(0, sync.getWaitQueueLength(c));          assertEquals(0, sync.getWaitQueueLength(c));
# Line 672  Line 675 
675          Thread t1 = new Thread(new CheckedRunnable() {          Thread t1 = new Thread(new CheckedRunnable() {
676              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
677                  sync.acquire(1);                  sync.acquire(1);
678                  threadAssertFalse(sync.hasWaiters(c));                  assertFalse(sync.hasWaiters(c));
679                  threadAssertEquals(0, sync.getWaitQueueLength(c));                  assertEquals(0, sync.getWaitQueueLength(c));
680                  c.await();                  c.await();
681                  sync.release(1);                  sync.release(1);
682              }});              }});
# Line 681  Line 684 
684          Thread t2 = new Thread(new CheckedRunnable() {          Thread t2 = new Thread(new CheckedRunnable() {
685              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
686                  sync.acquire(1);                  sync.acquire(1);
687                  threadAssertTrue(sync.hasWaiters(c));                  assertTrue(sync.hasWaiters(c));
688                  threadAssertEquals(1, sync.getWaitQueueLength(c));                  assertEquals(1, sync.getWaitQueueLength(c));
689                  c.await();                  c.await();
690                  sync.release(1);                  sync.release(1);
691              }});              }});
692    
693          t1.start();          t1.start();
694          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
695          t2.start();          t2.start();
696          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
697          sync.acquire(1);          sync.acquire(1);
698          assertTrue(sync.hasWaiters(c));          assertTrue(sync.hasWaiters(c));
699          assertEquals(2, sync.getWaitQueueLength(c));          assertEquals(2, sync.getWaitQueueLength(c));
700          c.signalAll();          c.signalAll();
701          sync.release(1);          sync.release(1);
702          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
703          sync.acquire(1);          sync.acquire(1);
704          assertFalse(sync.hasWaiters(c));          assertFalse(sync.hasWaiters(c));
705          assertEquals(0, sync.getWaitQueueLength(c));          assertEquals(0, sync.getWaitQueueLength(c));
# Line 716  Line 719 
719          Thread t1 = new Thread(new CheckedRunnable() {          Thread t1 = new Thread(new CheckedRunnable() {
720              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
721                  sync.acquire(1);                  sync.acquire(1);
722                  threadAssertTrue(sync.getWaitingThreads(c).isEmpty());                  assertTrue(sync.getWaitingThreads(c).isEmpty());
723                  c.await();                  c.await();
724                  sync.release(1);                  sync.release(1);
725              }});              }});
# Line 724  Line 727 
727          Thread t2 = new Thread(new CheckedRunnable() {          Thread t2 = new Thread(new CheckedRunnable() {
728              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
729                  sync.acquire(1);                  sync.acquire(1);
730                  threadAssertFalse(sync.getWaitingThreads(c).isEmpty());                  assertFalse(sync.getWaitingThreads(c).isEmpty());
731                  c.await();                  c.await();
732                  sync.release(1);                  sync.release(1);
733              }});              }});
# Line 733  Line 736 
736          assertTrue(sync.getWaitingThreads(c).isEmpty());          assertTrue(sync.getWaitingThreads(c).isEmpty());
737          sync.release(1);          sync.release(1);
738          t1.start();          t1.start();
739          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
740          t2.start();          t2.start();
741          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
742          sync.acquire(1);          sync.acquire(1);
743          assertTrue(sync.hasWaiters(c));          assertTrue(sync.hasWaiters(c));
744          assertTrue(sync.getWaitingThreads(c).contains(t1));          assertTrue(sync.getWaitingThreads(c).contains(t1));
745          assertTrue(sync.getWaitingThreads(c).contains(t2));          assertTrue(sync.getWaitingThreads(c).contains(t2));
746          c.signalAll();          c.signalAll();
747          sync.release(1);          sync.release(1);
748          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
749          sync.acquire(1);          sync.acquire(1);
750          assertFalse(sync.hasWaiters(c));          assertFalse(sync.hasWaiters(c));
751          assertTrue(sync.getWaitingThreads(c).isEmpty());          assertTrue(sync.getWaitingThreads(c).isEmpty());
# Line 769  Line 772 
772              }});              }});
773    
774          t.start();          t.start();
775          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
776          t.interrupt();          t.interrupt();
777          sync.acquire(1);          sync.acquire(1);
778          c.signal();          c.signal();
# Line 791  Line 794 
794              }});              }});
795    
796          t.start();          t.start();
797          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
798          t.interrupt();          t.interrupt();
799          t.join(SHORT_DELAY_MS);          t.join(SHORT_DELAY_MS);
800          assertFalse(t.isAlive());          assertFalse(t.isAlive());
# Line 806  Line 809 
809          Thread t = new Thread(new CheckedInterruptedRunnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
810              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
811                  sync.acquire(1);                  sync.acquire(1);
812                  c.awaitNanos(LONG_DELAY_MS * 1000L * 1000L);                  c.awaitNanos(MILLISECONDS.toNanos(LONG_DELAY_MS));
813              }});              }});
814    
815          t.start();          t.start();
816          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
817          t.interrupt();          t.interrupt();
818          t.join(SHORT_DELAY_MS);          t.join(SHORT_DELAY_MS);
819          assertFalse(t.isAlive());          assertFalse(t.isAlive());
# Line 830  Line 833 
833              }});              }});
834    
835          t.start();          t.start();
836          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
837          t.interrupt();          t.interrupt();
838          t.join(SHORT_DELAY_MS);          t.join(SHORT_DELAY_MS);
839          assertFalse(t.isAlive());          assertFalse(t.isAlive());
# Line 858  Line 861 
861    
862          t1.start();          t1.start();
863          t2.start();          t2.start();
864          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
865          sync.acquire(1);          sync.acquire(1);
866          c.signalAll();          c.signalAll();
867          sync.release(1);          sync.release(1);
# Line 931  Line 934 
934    
935          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
936              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
937                  threadAssertFalse(l.isSignalled());                  assertFalse(l.isSignalled());
938                  l.acquireSharedInterruptibly(0);                  l.acquireSharedInterruptibly(0);
939                  threadAssertTrue(l.isSignalled());                  assertTrue(l.isSignalled());
940              }});              }});
941    
942          t.start();          t.start();
943          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
944          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
945          l.releaseShared(0);          l.releaseShared(0);
946          assertTrue(l.isSignalled());          assertTrue(l.isSignalled());
947          t.join();          t.join();
# Line 948  Line 951 
951      /**      /**
952       * acquireSharedTimed returns after release       * acquireSharedTimed returns after release
953       */       */
954      public void testAsquireSharedTimed() throws InterruptedException {      public void testAcquireSharedTimed() throws InterruptedException {
955          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
956    
957          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
958              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
959                  threadAssertFalse(l.isSignalled());                  assertFalse(l.isSignalled());
960                  threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS * 1000L * 1000L));                  long nanos = MILLISECONDS.toNanos(MEDIUM_DELAY_MS);
961                  threadAssertTrue(l.isSignalled());                  assertTrue(l.tryAcquireSharedNanos(0, nanos));
962                    assertTrue(l.isSignalled());
963              }});              }});
964    
965          t.start();          t.start();
966          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
967          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
968          l.releaseShared(0);          l.releaseShared(0);
969          assertTrue(l.isSignalled());          assertTrue(l.isSignalled());
970          t.join();          t.join();
# Line 973  Line 977 
977          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
978          Thread t = new Thread(new CheckedInterruptedRunnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
979              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
980                  threadAssertFalse(l.isSignalled());                  assertFalse(l.isSignalled());
981                  l.acquireSharedInterruptibly(0);                  l.acquireSharedInterruptibly(0);
982              }});              }});
983    
# Line 990  Line 994 
994          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
995          Thread t = new Thread(new CheckedInterruptedRunnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
996              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
997                  threadAssertFalse(l.isSignalled());                  assertFalse(l.isSignalled());
998                  l.tryAcquireSharedNanos(0, SMALL_DELAY_MS * 1000L * 1000L);                  long nanos = MILLISECONDS.toNanos(SMALL_DELAY_MS);
999                    l.tryAcquireSharedNanos(0, nanos);
1000              }});              }});
1001    
1002          t.start();          t.start();
1003          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
1004          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
1005          t.interrupt();          t.interrupt();
1006          t.join();          t.join();
# Line 1008  Line 1013 
1013          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
1014          Thread t = new Thread(new CheckedRunnable() {          Thread t = new Thread(new CheckedRunnable() {
1015              public void realRun() throws InterruptedException {              public void realRun() throws InterruptedException {
1016                  threadAssertFalse(l.isSignalled());                  assertFalse(l.isSignalled());
1017                  threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS * 1000L * 1000L));                  long nanos = MILLISECONDS.toNanos(SMALL_DELAY_MS);
1018                    assertFalse(l.tryAcquireSharedNanos(0, nanos));
1019              }});              }});
1020    
1021          t.start();          t.start();
1022          Thread.sleep(SHORT_DELAY_MS);          delay(SHORT_DELAY_MS);
1023          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
1024          t.join();          t.join();
1025      }      }

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.40

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8