6 |
|
|
7 |
|
package jsr166y; |
8 |
|
|
9 |
– |
import java.util.concurrent.*; |
10 |
– |
|
9 |
|
import java.util.Random; |
10 |
|
import java.util.Collection; |
11 |
|
import java.util.concurrent.locks.LockSupport; |
12 |
+ |
import java.util.concurrent.RejectedExecutionException; |
13 |
|
|
14 |
|
/** |
15 |
|
* A thread managed by a {@link ForkJoinPool}. This class is |
749 |
|
// Run State management |
750 |
|
|
751 |
|
// status check methods used mainly by ForkJoinPool |
752 |
< |
final boolean isRunning() { return runState == 0; } |
753 |
< |
final boolean isTerminated() { return (runState & TERMINATED) != 0; } |
754 |
< |
final boolean isSuspended() { return (runState & SUSPENDED) != 0; } |
755 |
< |
final boolean isTrimmed() { return (runState & TRIMMED) != 0; } |
752 |
> |
final boolean isRunning() { return runState == 0; } |
753 |
> |
final boolean isTerminated() { return (runState & TERMINATED) != 0; } |
754 |
> |
final boolean isSuspended() { return (runState & SUSPENDED) != 0; } |
755 |
> |
final boolean isTrimmed() { return (runState & TRIMMED) != 0; } |
756 |
|
|
757 |
|
final boolean isTerminating() { |
758 |
|
if ((runState & TERMINATING) != 0) |
931 |
|
* Possibly runs some tasks and/or blocks, until task is done. |
932 |
|
* |
933 |
|
* @param joinMe the task to join |
934 |
+ |
* @param timed true if use timed wait |
935 |
+ |
* @param nanos wait time if timed |
936 |
|
*/ |
937 |
< |
final void joinTask(ForkJoinTask<?> joinMe) { |
937 |
> |
final void joinTask(ForkJoinTask<?> joinMe, boolean timed, long nanos) { |
938 |
|
// currentJoin only written by this thread; only need ordered store |
939 |
|
ForkJoinTask<?> prevJoin = currentJoin; |
940 |
|
UNSAFE.putOrderedObject(this, currentJoinOffset, joinMe); |
944 |
|
if (sp != base) |
945 |
|
localHelpJoinTask(joinMe); |
946 |
|
if (joinMe.status >= 0) |
947 |
< |
pool.awaitJoin(joinMe, this); |
947 |
> |
pool.awaitJoin(joinMe, this, timed, nanos); |
948 |
|
} |
949 |
|
UNSAFE.putOrderedObject(this, currentJoinOffset, prevJoin); |
950 |
|
} |