KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > retrotranslator > runtime > java > util > concurrent > locks > LockSupport_TestCase


1 /***
2  * Retrotranslator: a Java bytecode transformer that translates Java classes
3  * compiled with JDK 5.0 into classes that can be run on JVM 1.4.
4  *
5  * Copyright (c) 2005 - 2007 Taras Puchko
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the copyright holders nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  */

32 package net.sf.retrotranslator.runtime.java.util.concurrent.locks;
33
34 import java.util.concurrent.locks.LockSupport JavaDoc;
35 import junit.framework.TestCase;
36
37 /**
38  * @author Taras Puchko
39  */

40 public class LockSupport_TestCase extends TestCase {
41
42     private static final int SLEEP_TIME = 100;
43
44     private abstract class ExecutingThread extends Thread JavaDoc {
45
46         private Throwable JavaDoc result;
47
48         protected abstract void execute() throws Throwable JavaDoc;
49
50         public final void run() {
51             try {
52                 execute();
53             } catch (Throwable JavaDoc throwable) {
54                 result = throwable;
55                 throwable.printStackTrace();
56             }
57         }
58
59         public void await() throws Throwable JavaDoc {
60             join();
61             if (result != null) {
62                 throw result;
63             }
64         }
65
66     }
67
68     public void testPark_ParkUnpark() throws Throwable JavaDoc {
69         ExecutingThread thread = new ExecutingThread() {
70             protected void execute() throws Throwable JavaDoc {
71                 LockSupport.park();
72             }
73         };
74         thread.start();
75         Thread.sleep(SLEEP_TIME);
76         LockSupport.unpark(thread);
77         thread.await();
78     }
79
80     public void testPark_UnparkPark() throws Throwable JavaDoc {
81         ExecutingThread thread = new ExecutingThread() {
82             protected void execute() throws Throwable JavaDoc {
83                 Thread.sleep(SLEEP_TIME);
84                 LockSupport.park();
85             }
86         };
87         thread.start();
88         LockSupport.unpark(thread);
89         thread.await();
90     }
91
92     public void testPark_ParkInterrupt() throws Throwable JavaDoc {
93         ExecutingThread thread = new ExecutingThread() {
94             protected void execute() throws Throwable JavaDoc {
95                 LockSupport.park();
96             }
97         };
98         thread.start();
99         Thread.sleep(SLEEP_TIME);
100         thread.interrupt();
101         thread.await();
102     }
103
104     public void testPark_InterruptPark() throws Throwable JavaDoc {
105         ExecutingThread thread = new ExecutingThread() {
106             protected void execute() throws Throwable JavaDoc {
107                 Thread.currentThread().interrupt();
108                 LockSupport.park();
109             }
110         };
111         thread.start();
112         thread.await();
113     }
114
115     public void testParkNanos() throws Throwable JavaDoc {
116         ExecutingThread thread = new ExecutingThread() {
117             protected void execute() throws Throwable JavaDoc {
118                 Thread.currentThread().interrupt();
119                 LockSupport.parkNanos(1001000);
120             }
121         };
122         thread.start();
123         thread.await();
124     }
125
126     public void testParkUntil() throws Throwable JavaDoc {
127         ExecutingThread thread = new ExecutingThread() {
128             protected void execute() throws Throwable JavaDoc {
129                 Thread.currentThread().interrupt();
130                 LockSupport.parkUntil(System.currentTimeMillis() + 500);
131             }
132         };
133         thread.start();
134         thread.await();
135     }
136
137 }
Popular Tags