1066 |
|
* Checks that thread eventually enters the expected blocked thread state. |
1067 |
|
*/ |
1068 |
|
void assertThreadBlocks(Thread thread, Thread.State expected) { |
1069 |
< |
// always sleep at least 1 ms, avoiding transitional states |
1070 |
< |
// with high probability |
1069 |
> |
// always sleep at least 1 ms, with high probability avoiding |
1070 |
> |
// transitory states |
1071 |
|
for (long retries = LONG_DELAY_MS * 3 / 4; retries-->0; ) { |
1072 |
|
try { delay(1); } |
1073 |
|
catch (InterruptedException fail) { |
1101 |
|
} catch (InterruptedException fail) { |
1102 |
|
threadFail("Unexpected InterruptedException"); |
1103 |
|
} |
1104 |
– |
} |
1105 |
– |
|
1106 |
– |
/** |
1107 |
– |
* Checks that the threads do not terminate within the default |
1108 |
– |
* millisecond delay of {@code timeoutMillis()}. |
1109 |
– |
*/ |
1110 |
– |
void assertThreadsStayAlive(Thread... threads) { |
1111 |
– |
assertThreadsStayAlive(timeoutMillis(), threads); |
1112 |
– |
} |
1113 |
– |
|
1114 |
– |
/** |
1115 |
– |
* Checks that the threads do not terminate within the given millisecond delay. |
1116 |
– |
*/ |
1117 |
– |
void assertThreadsStayAlive(long millis, Thread... threads) { |
1118 |
– |
try { |
1119 |
– |
// No need to optimize the failing case via Thread.join. |
1120 |
– |
delay(millis); |
1121 |
– |
for (Thread thread : threads) |
1122 |
– |
assertTrue(thread.isAlive()); |
1123 |
– |
} catch (InterruptedException fail) { |
1124 |
– |
threadFail("Unexpected InterruptedException"); |
1125 |
– |
} |
1104 |
|
} |
1105 |
|
|
1106 |
|
/** |