44 |
|
void park() { |
45 |
|
LockSupport.park(); |
46 |
|
} |
47 |
< |
void park(long millis) { |
48 |
< |
throw new UnsupportedOperationException(); |
49 |
< |
} |
47 |
> |
Thread.State parkedState() { return Thread.State.WAITING; } |
48 |
|
}, |
49 |
|
parkUntil() { |
50 |
|
void park(long millis) { |
60 |
|
void park() { |
61 |
|
LockSupport.park(theBlocker()); |
62 |
|
} |
63 |
< |
void park(long millis) { |
66 |
< |
throw new UnsupportedOperationException(); |
67 |
< |
} |
63 |
> |
Thread.State parkedState() { return Thread.State.WAITING; } |
64 |
|
}, |
65 |
|
parkUntilBlocker() { |
66 |
|
void park(long millis) { |
75 |
|
}; |
76 |
|
|
77 |
|
void park() { park(2 * LONG_DELAY_MS); } |
78 |
< |
abstract void park(long millis); |
78 |
> |
void park(long millis) { |
79 |
> |
throw new UnsupportedOperationException(); |
80 |
> |
} |
81 |
> |
Thread.State parkedState() { return Thread.State.TIMED_WAITING; } |
82 |
|
|
83 |
|
/** Returns a deadline to use with parkUntil. */ |
84 |
|
long deadline(long millis) { |
194 |
|
}}); |
195 |
|
|
196 |
|
await(pleaseInterrupt); |
197 |
< |
assertThreadStaysAlive(t); |
197 |
> |
assertThreadBlocks(t, parkMethod.parkedState()); |
198 |
|
t.interrupt(); |
199 |
|
awaitTermination(t); |
200 |
|
} |
222 |
|
} |
223 |
|
public void testParkAfterInterrupt(final ParkMethod parkMethod) { |
224 |
|
final CountDownLatch pleaseInterrupt = new CountDownLatch(1); |
226 |
– |
final AtomicBoolean pleasePark = new AtomicBoolean(false); |
225 |
|
Thread t = newStartedThread(new CheckedRunnable() { |
226 |
|
public void realRun() throws Exception { |
227 |
|
pleaseInterrupt.countDown(); |
228 |
< |
while (!pleasePark.get()) |
228 |
> |
while (!Thread.currentThread().isInterrupted()) |
229 |
|
Thread.yield(); |
232 |
– |
assertTrue(Thread.currentThread().isInterrupted()); |
230 |
|
parkMethod.park(); |
231 |
< |
assertTrue(Thread.currentThread().isInterrupted()); |
231 |
> |
assertTrue(Thread.interrupted()); |
232 |
|
}}); |
233 |
|
|
234 |
|
await(pleaseInterrupt); |
235 |
|
t.interrupt(); |
239 |
– |
pleasePark.set(true); |
236 |
|
awaitTermination(t); |
237 |
|
} |
238 |
|
|