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

Comparing jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java (file contents):
Revision 1.10 by jsr166, Wed Nov 18 16:04:34 2009 UTC vs.
Revision 1.13 by jsr166, Sat Nov 21 17:54:04 2009 UTC

# Line 10 | Line 10
10   import junit.framework.*;
11   import java.util.*;
12   import java.util.concurrent.*;
13 + import static java.util.concurrent.TimeUnit.MILLISECONDS;
14   import java.util.concurrent.locks.*;
15   import java.io.*;
16  
# Line 96 | Line 97 | public class AbstractQueuedLongSynchroni
97       * isHeldExclusively is false upon construction
98       */
99      public void testIsHeldExclusively() {
100 <        Mutex rl = new Mutex();
100 >        Mutex rl = new Mutex();
101          assertFalse(rl.isHeldExclusively());
102      }
103  
# Line 104 | Line 105 | public class AbstractQueuedLongSynchroni
105       * acquiring released sync succeeds
106       */
107      public void testAcquire() {
108 <        Mutex rl = new Mutex();
108 >        Mutex rl = new Mutex();
109          rl.acquire(1);
110          assertTrue(rl.isHeldExclusively());
111          rl.release(1);
# Line 115 | Line 116 | public class AbstractQueuedLongSynchroni
116       * tryAcquire on an released sync succeeds
117       */
118      public void testTryAcquire() {
119 <        Mutex rl = new Mutex();
119 >        Mutex rl = new Mutex();
120          assertTrue(rl.tryAcquire(1));
121          assertTrue(rl.isHeldExclusively());
122          rl.release(1);
# Line 125 | Line 126 | public class AbstractQueuedLongSynchroni
126       * hasQueuedThreads reports whether there are waiting threads
127       */
128      public void testhasQueuedThreads() throws InterruptedException {
129 <        final Mutex sync = new Mutex();
129 >        final Mutex sync = new Mutex();
130          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
131          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
132          assertFalse(sync.hasQueuedThreads());
# Line 150 | Line 151 | public class AbstractQueuedLongSynchroni
151       * isQueued(null) throws NPE
152       */
153      public void testIsQueuedNPE() {
154 <        final Mutex sync = new Mutex();
154 >        final Mutex sync = new Mutex();
155          try {
156              sync.isQueued(null);
157              shouldThrow();
# Line 161 | Line 162 | public class AbstractQueuedLongSynchroni
162       * isQueued reports whether a thread is queued.
163       */
164      public void testIsQueued() throws InterruptedException {
165 <        final Mutex sync = new Mutex();
165 >        final Mutex sync = new Mutex();
166          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
167          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
168          assertFalse(sync.isQueued(t1));
# Line 191 | Line 192 | public class AbstractQueuedLongSynchroni
192       * getFirstQueuedThread returns first waiting thread or null if none
193       */
194      public void testGetFirstQueuedThread() throws InterruptedException {
195 <        final Mutex sync = new Mutex();
195 >        final Mutex sync = new Mutex();
196          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
197          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
198          assertNull(sync.getFirstQueuedThread());
# Line 218 | Line 219 | public class AbstractQueuedLongSynchroni
219       * hasContended reports false if no thread has ever blocked, else true
220       */
221      public void testHasContended() throws InterruptedException {
222 <        final Mutex sync = new Mutex();
222 >        final Mutex sync = new Mutex();
223          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
224          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
225          assertFalse(sync.hasContended());
# Line 243 | Line 244 | public class AbstractQueuedLongSynchroni
244       * getQueuedThreads includes waiting threads
245       */
246      public void testGetQueuedThreads() throws InterruptedException {
247 <        final Mutex sync = new Mutex();
247 >        final Mutex sync = new Mutex();
248          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
249          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
250          assertTrue(sync.getQueuedThreads().isEmpty());
# Line 271 | Line 272 | public class AbstractQueuedLongSynchroni
272       * getExclusiveQueuedThreads includes waiting threads
273       */
274      public void testGetExclusiveQueuedThreads() throws InterruptedException {
275 <        final Mutex sync = new Mutex();
275 >        final Mutex sync = new Mutex();
276          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
277          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
278          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
# Line 299 | Line 300 | public class AbstractQueuedLongSynchroni
300       * getSharedQueuedThreads does not include exclusively waiting threads
301       */
302      public void testGetSharedQueuedThreads() throws InterruptedException {
303 <        final Mutex sync = new Mutex();
303 >        final Mutex sync = new Mutex();
304          Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
305          Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
306          assertTrue(sync.getSharedQueuedThreads().isEmpty());
# Line 325 | Line 326 | public class AbstractQueuedLongSynchroni
326       * tryAcquireNanos is interruptible.
327       */
328      public void testInterruptedException2() throws InterruptedException {
329 <        final Mutex sync = new Mutex();
330 <        sync.acquire(1);
331 <        Thread t = new Thread(new CheckedInterruptedRunnable() {
329 >        final Mutex sync = new Mutex();
330 >        sync.acquire(1);
331 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
332              public void realRun() throws InterruptedException {
333                  sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000 * 1000);
334              }});
# Line 342 | Line 343 | public class AbstractQueuedLongSynchroni
343       * TryAcquire on exclusively held sync fails
344       */
345      public void testTryAcquireWhenSynced() throws InterruptedException {
346 <        final Mutex sync = new Mutex();
347 <        sync.acquire(1);
348 <        Thread t = new Thread(new CheckedRunnable() {
346 >        final Mutex sync = new Mutex();
347 >        sync.acquire(1);
348 >        Thread t = new Thread(new CheckedRunnable() {
349              public void realRun() {
350                  threadAssertFalse(sync.tryAcquire(1));
351              }});
# Line 358 | Line 359 | public class AbstractQueuedLongSynchroni
359       * tryAcquireNanos on an exclusively held sync times out
360       */
361      public void testAcquireNanos_Timeout() throws InterruptedException {
362 <        final Mutex sync = new Mutex();
363 <        sync.acquire(1);
364 <        Thread t = new Thread(new CheckedRunnable() {
362 >        final Mutex sync = new Mutex();
363 >        sync.acquire(1);
364 >        Thread t = new Thread(new CheckedRunnable() {
365              public void realRun() throws InterruptedException {
366                  threadAssertFalse(sync.tryAcquireNanos(1, 1000 * 1000));
367              }});
# Line 375 | Line 376 | public class AbstractQueuedLongSynchroni
376       * getState is true when acquired and false when not
377       */
378      public void testGetState() throws InterruptedException {
379 <        final Mutex sync = new Mutex();
380 <        sync.acquire(1);
381 <        assertTrue(sync.isHeldExclusively());
382 <        sync.release(1);
383 <        assertFalse(sync.isHeldExclusively());
384 <        Thread t = new Thread(new CheckedRunnable() {
379 >        final Mutex sync = new Mutex();
380 >        sync.acquire(1);
381 >        assertTrue(sync.isHeldExclusively());
382 >        sync.release(1);
383 >        assertFalse(sync.isHeldExclusively());
384 >        Thread t = new Thread(new CheckedRunnable() {
385              public void realRun() throws InterruptedException {
386                  sync.acquire(1);
387                  Thread.sleep(SMALL_DELAY_MS);
# Line 399 | Line 400 | public class AbstractQueuedLongSynchroni
400       * acquireInterruptibly is interruptible.
401       */
402      public void testAcquireInterruptibly1() throws InterruptedException {
403 <        final Mutex sync = new Mutex();
404 <        sync.acquire(1);
405 <        Thread t = new Thread(new InterruptedSyncRunnable(sync));
403 >        final Mutex sync = new Mutex();
404 >        sync.acquire(1);
405 >        Thread t = new Thread(new InterruptedSyncRunnable(sync));
406          t.start();
407          Thread.sleep(SHORT_DELAY_MS);
408          t.interrupt();
# Line 414 | Line 415 | public class AbstractQueuedLongSynchroni
415       * acquireInterruptibly succeeds when released, else is interruptible
416       */
417      public void testAcquireInterruptibly2() throws InterruptedException {
418 <        final Mutex sync = new Mutex();
418 >        final Mutex sync = new Mutex();
419          sync.acquireInterruptibly(1);
420 <        Thread t = new Thread(new InterruptedSyncRunnable(sync));
420 >        Thread t = new Thread(new InterruptedSyncRunnable(sync));
421          t.start();
422          t.interrupt();
423          assertTrue(sync.isHeldExclusively());
# Line 427 | Line 428 | public class AbstractQueuedLongSynchroni
428       * owns is true for a condition created by sync else false
429       */
430      public void testOwns() {
431 <        final Mutex sync = new Mutex();
431 >        final Mutex sync = new Mutex();
432          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
433          final Mutex sync2 = new Mutex();
434          assertTrue(sync.owns(c));
# Line 438 | Line 439 | public class AbstractQueuedLongSynchroni
439       * Calling await without holding sync throws IllegalMonitorStateException
440       */
441      public void testAwait_IllegalMonitor() throws InterruptedException {
442 <        final Mutex sync = new Mutex();
442 >        final Mutex sync = new Mutex();
443          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
444          try {
445              c.await();
# Line 450 | Line 451 | public class AbstractQueuedLongSynchroni
451       * Calling signal without holding sync throws IllegalMonitorStateException
452       */
453      public void testSignal_IllegalMonitor() throws InterruptedException {
454 <        final Mutex sync = new Mutex();
454 >        final Mutex sync = new Mutex();
455          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
456          try {
457              c.signal();
# Line 462 | Line 463 | public class AbstractQueuedLongSynchroni
463       * awaitNanos without a signal times out
464       */
465      public void testAwaitNanos_Timeout() throws InterruptedException {
466 <        final Mutex sync = new Mutex();
466 >        final Mutex sync = new Mutex();
467          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
468          sync.acquire(1);
469          long t = c.awaitNanos(100);
# Line 474 | Line 475 | public class AbstractQueuedLongSynchroni
475       *  Timed await without a signal times out
476       */
477      public void testAwait_Timeout() throws InterruptedException {
478 <        final Mutex sync = new Mutex();
478 >        final Mutex sync = new Mutex();
479          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
480          sync.acquire(1);
481 <        assertFalse(c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
481 >        assertFalse(c.await(SHORT_DELAY_MS, MILLISECONDS));
482          sync.release(1);
483      }
484  
# Line 485 | Line 486 | public class AbstractQueuedLongSynchroni
486       * awaitUntil without a signal times out
487       */
488      public void testAwaitUntil_Timeout() throws InterruptedException {
489 <        final Mutex sync = new Mutex();
489 >        final Mutex sync = new Mutex();
490          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
491          sync.acquire(1);
492          java.util.Date d = new java.util.Date();
# Line 497 | Line 498 | public class AbstractQueuedLongSynchroni
498       * await returns when signalled
499       */
500      public void testAwait() throws InterruptedException {
501 <        final Mutex sync = new Mutex();
501 >        final Mutex sync = new Mutex();
502          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
503 <        Thread t = new Thread(new CheckedRunnable() {
503 >        Thread t = new Thread(new CheckedRunnable() {
504              public void realRun() throws InterruptedException {
505                  sync.acquire(1);
506                  c.await();
# Line 521 | Line 522 | public class AbstractQueuedLongSynchroni
522       * hasWaiters throws NPE if null
523       */
524      public void testHasWaitersNPE() {
525 <        final Mutex sync = new Mutex();
525 >        final Mutex sync = new Mutex();
526          try {
527              sync.hasWaiters(null);
528              shouldThrow();
# Line 532 | Line 533 | public class AbstractQueuedLongSynchroni
533       * getWaitQueueLength throws NPE if null
534       */
535      public void testGetWaitQueueLengthNPE() {
536 <        final Mutex sync = new Mutex();
536 >        final Mutex sync = new Mutex();
537          try {
538              sync.getWaitQueueLength(null);
539              shouldThrow();
# Line 544 | Line 545 | public class AbstractQueuedLongSynchroni
545       * getWaitingThreads throws NPE if null
546       */
547      public void testGetWaitingThreadsNPE() {
548 <        final Mutex sync = new Mutex();
548 >        final Mutex sync = new Mutex();
549          try {
550              sync.getWaitingThreads(null);
551              shouldThrow();
# Line 556 | Line 557 | public class AbstractQueuedLongSynchroni
557       * hasWaiters throws IAE if not owned
558       */
559      public void testHasWaitersIAE() {
560 <        final Mutex sync = new Mutex();
560 >        final Mutex sync = new Mutex();
561          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
562 <        final Mutex sync2 = new Mutex();
562 >        final Mutex sync2 = new Mutex();
563          try {
564              sync2.hasWaiters(c);
565              shouldThrow();
# Line 569 | Line 570 | public class AbstractQueuedLongSynchroni
570       * hasWaiters throws IMSE if not synced
571       */
572      public void testHasWaitersIMSE() {
573 <        final Mutex sync = new Mutex();
573 >        final Mutex sync = new Mutex();
574          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
575          try {
576              sync.hasWaiters(c);
# Line 582 | Line 583 | public class AbstractQueuedLongSynchroni
583       * getWaitQueueLength throws IAE if not owned
584       */
585      public void testGetWaitQueueLengthIAE() {
586 <        final Mutex sync = new Mutex();
586 >        final Mutex sync = new Mutex();
587          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
588 <        final Mutex sync2 = new Mutex();
588 >        final Mutex sync2 = new Mutex();
589          try {
590              sync2.getWaitQueueLength(c);
591              shouldThrow();
# Line 595 | Line 596 | public class AbstractQueuedLongSynchroni
596       * getWaitQueueLength throws IMSE if not synced
597       */
598      public void testGetWaitQueueLengthIMSE() {
599 <        final Mutex sync = new Mutex();
599 >        final Mutex sync = new Mutex();
600          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
601          try {
602              sync.getWaitQueueLength(c);
# Line 608 | Line 609 | public class AbstractQueuedLongSynchroni
609       * getWaitingThreads throws IAE if not owned
610       */
611      public void testGetWaitingThreadsIAE() {
612 <        final Mutex sync = new Mutex();
612 >        final Mutex sync = new Mutex();
613          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
614 <        final Mutex sync2 = new Mutex();
614 >        final Mutex sync2 = new Mutex();
615          try {
616              sync2.getWaitingThreads(c);
617              shouldThrow();
# Line 621 | Line 622 | public class AbstractQueuedLongSynchroni
622       * getWaitingThreads throws IMSE if not synced
623       */
624      public void testGetWaitingThreadsIMSE() {
625 <        final Mutex sync = new Mutex();
625 >        final Mutex sync = new Mutex();
626          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
627          try {
628              sync.getWaitingThreads(c);
# Line 635 | Line 636 | public class AbstractQueuedLongSynchroni
636       * hasWaiters returns true when a thread is waiting, else false
637       */
638      public void testHasWaiters() throws InterruptedException {
639 <        final Mutex sync = new Mutex();
639 >        final Mutex sync = new Mutex();
640          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
641 <        Thread t = new Thread(new CheckedRunnable() {
641 >        Thread t = new Thread(new CheckedRunnable() {
642              public void realRun() throws InterruptedException {
643                  sync.acquire(1);
644                  threadAssertFalse(sync.hasWaiters(c));
# Line 666 | Line 667 | public class AbstractQueuedLongSynchroni
667       * getWaitQueueLength returns number of waiting threads
668       */
669      public void testGetWaitQueueLength() throws InterruptedException {
670 <        final Mutex sync = new Mutex();
670 >        final Mutex sync = new Mutex();
671          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
672 <        Thread t1 = new Thread(new CheckedRunnable() {
672 >        Thread t1 = new Thread(new CheckedRunnable() {
673              public void realRun() throws InterruptedException {
674                  sync.acquire(1);
675                  threadAssertFalse(sync.hasWaiters(c));
# Line 677 | Line 678 | public class AbstractQueuedLongSynchroni
678                  sync.release(1);
679              }});
680  
681 <        Thread t2 = new Thread(new CheckedRunnable() {
681 >        Thread t2 = new Thread(new CheckedRunnable() {
682              public void realRun() throws InterruptedException {
683                  sync.acquire(1);
684                  threadAssertTrue(sync.hasWaiters(c));
# Line 710 | Line 711 | public class AbstractQueuedLongSynchroni
711       * getWaitingThreads returns only and all waiting threads
712       */
713      public void testGetWaitingThreads() throws InterruptedException {
714 <        final Mutex sync = new Mutex();
714 >        final Mutex sync = new Mutex();
715          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
716 <        Thread t1 = new Thread(new CheckedRunnable() {
716 >        Thread t1 = new Thread(new CheckedRunnable() {
717              public void realRun() throws InterruptedException {
718                  sync.acquire(1);
719                  threadAssertTrue(sync.getWaitingThreads(c).isEmpty());
# Line 720 | Line 721 | public class AbstractQueuedLongSynchroni
721                  sync.release(1);
722              }});
723  
724 <        Thread t2 = new Thread(new CheckedRunnable() {
724 >        Thread t2 = new Thread(new CheckedRunnable() {
725              public void realRun() throws InterruptedException {
726                  sync.acquire(1);
727                  threadAssertFalse(sync.getWaitingThreads(c).isEmpty());
# Line 758 | Line 759 | public class AbstractQueuedLongSynchroni
759       * awaitUninterruptibly doesn't abort on interrupt
760       */
761      public void testAwaitUninterruptibly() throws InterruptedException {
762 <        final Mutex sync = new Mutex();
762 >        final Mutex sync = new Mutex();
763          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
764 <        Thread t = new Thread(new CheckedRunnable() {
764 >        Thread t = new Thread(new CheckedRunnable() {
765              public void realRun() {
766                  sync.acquire(1);
767                  c.awaitUninterruptibly();
# Line 781 | Line 782 | public class AbstractQueuedLongSynchroni
782       * await is interruptible
783       */
784      public void testAwait_Interrupt() throws InterruptedException {
785 <        final Mutex sync = new Mutex();
785 >        final Mutex sync = new Mutex();
786          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
787 <        Thread t = new Thread(new CheckedInterruptedRunnable() {
788 <            public void realRun() throws InterruptedException {
787 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
788 >            public void realRun() throws InterruptedException {
789                  sync.acquire(1);
790                  c.await();
790                sync.release(1);
791              }});
792  
793          t.start();
# Line 801 | Line 801 | public class AbstractQueuedLongSynchroni
801       * awaitNanos is interruptible
802       */
803      public void testAwaitNanos_Interrupt() throws InterruptedException {
804 <        final Mutex sync = new Mutex();
804 >        final Mutex sync = new Mutex();
805          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
806 <        Thread t = new Thread(new CheckedInterruptedRunnable() {
807 <            public void realRun() throws InterruptedException {
806 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
807 >            public void realRun() throws InterruptedException {
808                  sync.acquire(1);
809                  c.awaitNanos(1000 * 1000 * 1000); // 1 sec
810                sync.release(1);
810              }});
811  
812          t.start();
# Line 821 | Line 820 | public class AbstractQueuedLongSynchroni
820       * awaitUntil is interruptible
821       */
822      public void testAwaitUntil_Interrupt() throws InterruptedException {
823 <        final Mutex sync = new Mutex();
823 >        final Mutex sync = new Mutex();
824          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
825 <        Thread t = new Thread(new CheckedInterruptedRunnable() {
826 <            public void realRun() throws InterruptedException {
825 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
826 >            public void realRun() throws InterruptedException {
827                  sync.acquire(1);
828                  java.util.Date d = new java.util.Date();
829                  c.awaitUntil(new java.util.Date(d.getTime() + 10000));
831                sync.release(1);
830              }});
831  
832          t.start();
# Line 842 | Line 840 | public class AbstractQueuedLongSynchroni
840       * signalAll wakes up all threads
841       */
842      public void testSignalAll() throws InterruptedException {
843 <        final Mutex sync = new Mutex();
843 >        final Mutex sync = new Mutex();
844          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
845 <        Thread t1 = new Thread(new CheckedRunnable() {
845 >        Thread t1 = new Thread(new CheckedRunnable() {
846              public void realRun() throws InterruptedException {
847                  sync.acquire(1);
848                  c.await();
849                  sync.release(1);
850              }});
851  
852 <        Thread t2 = new Thread(new CheckedRunnable() {
852 >        Thread t2 = new Thread(new CheckedRunnable() {
853              public void realRun() throws InterruptedException {
854                  sync.acquire(1);
855                  c.await();
# Line 907 | Line 905 | public class AbstractQueuedLongSynchroni
905       * tryReleaseShared setting state changes getState
906       */
907      public void testGetStateWithReleaseShared() {
908 <        final BooleanLatch l = new BooleanLatch();
909 <        assertFalse(l.isSignalled());
910 <        l.releaseShared(0);
911 <        assertTrue(l.isSignalled());
908 >        final BooleanLatch l = new BooleanLatch();
909 >        assertFalse(l.isSignalled());
910 >        l.releaseShared(0);
911 >        assertTrue(l.isSignalled());
912      }
913  
914      /**
915       * releaseShared has no effect when already signalled
916       */
917      public void testReleaseShared() {
918 <        final BooleanLatch l = new BooleanLatch();
919 <        assertFalse(l.isSignalled());
920 <        l.releaseShared(0);
921 <        assertTrue(l.isSignalled());
922 <        l.releaseShared(0);
923 <        assertTrue(l.isSignalled());
918 >        final BooleanLatch l = new BooleanLatch();
919 >        assertFalse(l.isSignalled());
920 >        l.releaseShared(0);
921 >        assertTrue(l.isSignalled());
922 >        l.releaseShared(0);
923 >        assertTrue(l.isSignalled());
924      }
925  
926      /**
927       * acquireSharedInterruptibly returns after release, but not before
928       */
929      public void testAcquireSharedInterruptibly() throws InterruptedException {
930 <        final BooleanLatch l = new BooleanLatch();
930 >        final BooleanLatch l = new BooleanLatch();
931  
932 <        Thread t = new Thread(new CheckedRunnable() {
932 >        Thread t = new Thread(new CheckedRunnable() {
933              public void realRun() throws InterruptedException {
934                  threadAssertFalse(l.isSignalled());
935                  l.acquireSharedInterruptibly(0);
# Line 951 | Line 949 | public class AbstractQueuedLongSynchroni
949       * acquireSharedTimed returns after release
950       */
951      public void testAsquireSharedTimed() throws InterruptedException {
952 <        final BooleanLatch l = new BooleanLatch();
952 >        final BooleanLatch l = new BooleanLatch();
953  
954 <        Thread t = new Thread(new CheckedRunnable() {
954 >        Thread t = new Thread(new CheckedRunnable() {
955              public void realRun() throws InterruptedException {
956                  threadAssertFalse(l.isSignalled());
957                  threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS* 1000 * 1000));
# Line 973 | Line 971 | public class AbstractQueuedLongSynchroni
971       */
972      public void testAcquireSharedInterruptibly_InterruptedException() throws InterruptedException {
973          final BooleanLatch l = new BooleanLatch();
974 <        Thread t = new Thread(new CheckedInterruptedRunnable() {
975 <            public void realRun() throws InterruptedException {
974 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
975 >            public void realRun() throws InterruptedException {
976                  threadAssertFalse(l.isSignalled());
977                  l.acquireSharedInterruptibly(0);
978              }});
979  
980 <        t.start();
980 >        t.start();
981          assertFalse(l.isSignalled());
982          t.interrupt();
983          t.join();
# Line 990 | Line 988 | public class AbstractQueuedLongSynchroni
988       */
989      public void testAcquireSharedNanos_InterruptedException() throws InterruptedException {
990          final BooleanLatch l = new BooleanLatch();
991 <        Thread t = new Thread(new CheckedInterruptedRunnable() {
992 <            public void realRun() throws InterruptedException {
991 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
992 >            public void realRun() throws InterruptedException {
993                  threadAssertFalse(l.isSignalled());
994                  l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000);
995              }});
# Line 1008 | Line 1006 | public class AbstractQueuedLongSynchroni
1006       */
1007      public void testAcquireSharedNanos_Timeout() throws InterruptedException {
1008          final BooleanLatch l = new BooleanLatch();
1009 <        Thread t = new Thread(new CheckedRunnable() {
1009 >        Thread t = new Thread(new CheckedRunnable() {
1010              public void realRun() throws InterruptedException {
1011                  threadAssertFalse(l.isSignalled());
1012                  threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines