ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/LockSupportTest.java
Revision: 1.11
Committed: Tue Nov 17 12:46:10 2009 UTC (14 years, 6 months ago) by jsr166
Branch: MAIN
Changes since 1.10: +58 -112 lines
Log Message:
cleanup exception handling; use CheckedRunnable

File Contents

# User Rev Content
1 dl 1.1 /*
2 dl 1.5 * 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
5 jsr166 1.8 * Other contributors include Andrew Wright, Jeffrey Hayes,
6     * Pat Fisher, Mike Judd.
7 dl 1.1 */
8    
9     import junit.framework.*;
10     import java.util.*;
11     import java.util.concurrent.*;
12     import java.util.concurrent.locks.*;
13    
14 jsr166 1.10 public class LockSupportTest extends JSR166TestCase {
15 dl 1.1 public static void main(String[] args) {
16 jsr166 1.8 junit.textui.TestRunner.run (suite());
17 dl 1.1 }
18     public static Test suite() {
19     return new TestSuite(LockSupportTest.class);
20     }
21    
22 dl 1.3 /**
23 dl 1.6 * park is released by unpark occurring after park
24 dl 1.3 */
25 jsr166 1.11 public void testPark() throws InterruptedException {
26     Thread t = new Thread(new CheckedRunnable() {
27     public void realRun() {
28     LockSupport.park();
29     }});
30    
31     t.start();
32     Thread.sleep(SHORT_DELAY_MS);
33     LockSupport.unpark(t);
34     t.join();
35 dl 1.1 }
36    
37 dl 1.3 /**
38 dl 1.6 * park is released by unpark occurring before park
39 dl 1.4 */
40 jsr166 1.11 public void testPark2() throws InterruptedException {
41     Thread t = new Thread(new CheckedRunnable() {
42     public void realRun() throws InterruptedException {
43     Thread.sleep(SHORT_DELAY_MS);
44     LockSupport.park();
45     }});
46    
47     t.start();
48     LockSupport.unpark(t);
49     t.join();
50 dl 1.4 }
51    
52     /**
53 jsr166 1.8 * park is released by interrupt
54 dl 1.4 */
55 jsr166 1.11 public void testPark3() throws InterruptedException {
56     Thread t = new Thread(new CheckedRunnable() {
57     public void realRun() {
58     LockSupport.park();
59     }});
60    
61     t.start();
62     Thread.sleep(SHORT_DELAY_MS);
63     t.interrupt();
64     t.join();
65 dl 1.4 }
66    
67     /**
68     * park returns if interrupted before park
69     */
70 jsr166 1.11 public void testPark4() throws InterruptedException {
71 dl 1.4 final ReentrantLock lock = new ReentrantLock();
72     lock.lock();
73 jsr166 1.11 Thread t = new Thread(new CheckedRunnable() {
74     public void realRun() {
75     lock.lock();
76     LockSupport.park();
77     }});
78    
79     t.start();
80     t.interrupt();
81     lock.unlock();
82     t.join();
83 dl 1.4 }
84    
85     /**
86     * parkNanos times out if not unparked
87 dl 1.3 */
88 jsr166 1.11 public void testParkNanos() throws InterruptedException {
89     Thread t = new Thread(new CheckedRunnable() {
90     public void realRun() {
91     LockSupport.parkNanos(1000);
92     }});
93    
94     t.start();
95     t.join();
96 dl 1.1 }
97    
98    
99 dl 1.3 /**
100 dl 1.4 * parkUntil times out if not unparked
101 dl 1.3 */
102 jsr166 1.11 public void testParkUntil() throws InterruptedException {
103     Thread t = new Thread(new CheckedRunnable() {
104     public void realRun() {
105     long d = new Date().getTime() + 100;
106     LockSupport.parkUntil(d);
107     }});
108    
109     t.start();
110     t.join();
111 dl 1.1 }
112     }