--- jsr166/src/jsr166y/ForkJoinTask.java 2009/07/20 21:54:51 1.8
+++ jsr166/src/jsr166y/ForkJoinTask.java 2009/07/21 18:11:44 1.11
@@ -96,10 +96,10 @@ import java.lang.reflect.*;
* by this class.
*
*
ForkJoinTasks should perform relatively small amounts of
- * computations, othewise splitting into smaller tasks. As a very
+ * computations, otherwise splitting into smaller tasks. As a very
* rough rule of thumb, a task should perform more than 100 and less
* than 10000 basic computational steps. If tasks are too big, then
- * parellelism cannot improve throughput. If too small, then memory
+ * parallelism cannot improve throughput. If too small, then memory
* and internal task maintenance overhead may overwhelm processing.
*
*
ForkJoinTasks are {@code Serializable}, which enables them
@@ -128,7 +128,7 @@ public abstract class ForkJoinTask im
* currently unused. Also value 0x80000000 is available as spare
* completion value.
*/
- volatile int status; // accessed directy by pool and workers
+ volatile int status; // accessed directly by pool and workers
static final int COMPLETION_MASK = 0xe0000000;
static final int NORMAL = 0xe0000000; // == mask
@@ -141,10 +141,10 @@ public abstract class ForkJoinTask im
/**
* Table of exceptions thrown by tasks, to enable reporting by
* callers. Because exceptions are rare, we don't directly keep
- * them with task objects, but instead us a weak ref table. Note
+ * them with task objects, but instead use a weak ref table. Note
* that cancellation exceptions don't appear in the table, but are
* instead recorded as status values.
- * Todo: Use ConcurrentReferenceHashMap
+ * TODO: Use ConcurrentReferenceHashMap
*/
static final Map, Throwable> exceptionMap =
Collections.synchronizedMap
@@ -153,7 +153,7 @@ public abstract class ForkJoinTask im
// within-package utilities
/**
- * Get current worker thread, or null if not a worker thread
+ * Gets current worker thread, or null if not a worker thread.
*/
static ForkJoinWorkerThread getWorker() {
Thread t = Thread.currentThread();
@@ -162,7 +162,7 @@ public abstract class ForkJoinTask im
}
final boolean casStatus(int cmp, int val) {
- return _unsafe.compareAndSwapInt(this, statusOffset, cmp, val);
+ return UNSAFE.compareAndSwapInt(this, statusOffset, cmp, val);
}
/**
@@ -170,13 +170,14 @@ public abstract class ForkJoinTask im
*/
static void rethrowException(Throwable ex) {
if (ex != null)
- _unsafe.throwException(ex);
+ UNSAFE.throwException(ex);
}
// Setting completion status
/**
- * Mark completion and wake up threads waiting to join this task.
+ * Marks completion and wakes up threads waiting to join this task.
+ *
* @param completion one of NORMAL, CANCELLED, EXCEPTIONAL
*/
final void setCompletion(int completion) {
@@ -212,7 +213,7 @@ public abstract class ForkJoinTask im
final void setNormalCompletion() {
// Try typical fast case -- single CAS, no signal, not already done.
// Manually expand casStatus to improve chances of inlining it
- if (!_unsafe.compareAndSwapInt(this, statusOffset, 0, NORMAL))
+ if (!UNSAFE.compareAndSwapInt(this, statusOffset, 0, NORMAL))
setCompletion(NORMAL);
}
@@ -255,6 +256,7 @@ public abstract class ForkJoinTask im
/**
* Sets status to indicate there is joiner, then waits for join,
* surrounded with pool notifications.
+ *
* @return status upon exit
*/
private int awaitDone(ForkJoinWorkerThread w, boolean maintainParallelism) {
@@ -297,7 +299,7 @@ public abstract class ForkJoinTask im
}
/**
- * Notify pool that thread is unblocked. Called by signalled
+ * Notifies pool that thread is unblocked. Called by signalled
* threads when woken by non-FJ threads (which is atypical).
*/
private void adjustPoolCountsOnUnblock(ForkJoinPool pool) {
@@ -308,7 +310,7 @@ public abstract class ForkJoinTask im
}
/**
- * Notify pool to adjust counts on cancelled or timed out wait
+ * Notifies pool to adjust counts on cancelled or timed out wait.
*/
private void adjustPoolCountsOnCancelledWait(ForkJoinPool pool) {
if (pool != null) {
@@ -323,7 +325,7 @@ public abstract class ForkJoinTask im
}
/**
- * Handle interruptions during waits.
+ * Handles interruptions during waits.
*/
private void onInterruptedWait() {
ForkJoinWorkerThread w = getWorker();
@@ -342,7 +344,8 @@ public abstract class ForkJoinTask im
}
/**
- * Throws the exception associated with status s;
+ * Throws the exception associated with status s.
+ *
* @throws the exception
*/
private void reportException(int s) {
@@ -355,7 +358,7 @@ public abstract class ForkJoinTask im
}
/**
- * Returns result or throws exception using j.u.c.Future conventions
+ * Returns result or throws exception using j.u.c.Future conventions.
* Only call when isDone known to be true.
*/
private V reportFutureResult()
@@ -375,7 +378,7 @@ public abstract class ForkJoinTask im
/**
* Returns result or throws exception using j.u.c.Future conventions
- * with timeouts
+ * with timeouts.
*/
private V reportTimedFutureResult()
throws InterruptedException, ExecutionException, TimeoutException {
@@ -396,7 +399,8 @@ public abstract class ForkJoinTask im
/**
* Calls exec, recording completion, and rethrowing exception if
- * encountered. Caller should normally check status before calling
+ * encountered. Caller should normally check status before calling.
+ *
* @return true if completed normally
*/
private boolean tryExec() {
@@ -414,7 +418,7 @@ public abstract class ForkJoinTask im
/**
* Main execution method used by worker threads. Invokes
- * base computation unless already complete
+ * base computation unless already complete.
*/
final void quietlyExec() {
if (status >= 0) {
@@ -430,8 +434,9 @@ public abstract class ForkJoinTask im
}
/**
- * Calls exec, recording but not rethrowing exception
- * Caller should normally check status before calling
+ * Calls exec(), recording but not rethrowing exception.
+ * Caller should normally check status before calling.
+ *
* @return true if completed normally
*/
private boolean tryQuietlyInvoke() {
@@ -447,7 +452,7 @@ public abstract class ForkJoinTask im
}
/**
- * Cancel, ignoring any exceptions it throws
+ * Cancels, ignoring any exceptions it throws.
*/
final void cancelIgnoringExceptions() {
try {
@@ -499,8 +504,9 @@ public abstract class ForkJoinTask im
/**
* Commences performing this task, awaits its completion if
* necessary, and return its result.
+ *
* @throws Throwable (a RuntimeException, Error, or unchecked
- * exception) if the underlying computation did so.
+ * exception) if the underlying computation did so
* @return the computed result
*/
public final V invoke() {
@@ -516,10 +522,11 @@ public abstract class ForkJoinTask im
* invoked only from within ForkJoinTask computations. Attempts to
* invoke in other contexts result in exceptions or errors
* possibly including ClassCastException.
+ *
* @param t1 one task
* @param t2 the other task
* @throws NullPointerException if t1 or t2 are null
- * @throws RuntimeException or Error if either task did so.
+ * @throws RuntimeException or Error if either task did so
*/
public static void invokeAll(ForkJoinTask>t1, ForkJoinTask> t2) {
t2.fork();
@@ -533,9 +540,10 @@ public abstract class ForkJoinTask im
* may be cancelled. This method may be invoked only from within
* ForkJoinTask computations. Attempts to invoke in other contexts
* result in exceptions or errors possibly including ClassCastException.
+ *
* @param tasks the array of tasks
- * @throws NullPointerException if tasks or any element are null.
- * @throws RuntimeException or Error if any task did so.
+ * @throws NullPointerException if tasks or any element are null
+ * @throws RuntimeException or Error if any task did so
*/
public static void invokeAll(ForkJoinTask>... tasks) {
Throwable ex = null;
@@ -575,11 +583,12 @@ public abstract class ForkJoinTask im
* {@code isDone} holds for all of them. If any task
* encounters an exception, others may be cancelled. This method
* may be invoked only from within ForkJoinTask
- * computations. Attempts to invoke in other contexts resul!t in
+ * computations. Attempts to invoke in other contexts result in
* exceptions or errors possibly including ClassCastException.
+ *
* @param tasks the collection of tasks
- * @throws NullPointerException if tasks or any element are null.
- * @throws RuntimeException or Error if any task did so.
+ * @throws NullPointerException if tasks or any element are null
+ * @throws RuntimeException or Error if any task did so
*/
public static void invokeAll(Collection extends ForkJoinTask>> tasks) {
if (!(tasks instanceof List)) {
@@ -623,6 +632,7 @@ public abstract class ForkJoinTask im
/**
* Returns true if the computation performed by this task has
* completed (or has been cancelled).
+ *
* @return true if this computation has completed
*/
public final boolean isDone() {
@@ -631,6 +641,7 @@ public abstract class ForkJoinTask im
/**
* Returns true if this task was cancelled.
+ *
* @return true if this task was cancelled
*/
public final boolean isCancelled() {
@@ -639,7 +650,7 @@ public abstract class ForkJoinTask im
/**
* Asserts that the results of this task's computation will not be
- * used. If a cancellation occurs before atempting to execute this
+ * used. If a cancellation occurs before attempting to execute this
* task, then execution will be suppressed, {@code isCancelled}
* will report true, and {@code join} will result in a
* {@code CancellationException} being thrown. Otherwise, when
@@ -670,7 +681,8 @@ public abstract class ForkJoinTask im
}
/**
- * Returns true if this task threw an exception or was cancelled
+ * Returns true if this task threw an exception or was cancelled.
+ *
* @return true if this task threw an exception or was cancelled
*/
public final boolean isCompletedAbnormally() {
@@ -681,6 +693,7 @@ public abstract class ForkJoinTask im
* Returns the exception thrown by the base computation, or a
* CancellationException if cancelled, or null if none or if the
* method has not yet completed.
+ *
* @return the exception, or null if none
*/
public final Throwable getException() {
@@ -722,7 +735,7 @@ public abstract class ForkJoinTask im
* overridable, but overridden versions must invoke {@code super}
* implementation to maintain guarantees.
*
- * @param value the result value for this task.
+ * @param value the result value for this task
*/
public void complete(V value) {
try {
@@ -753,12 +766,13 @@ public abstract class ForkJoinTask im
* Possibly executes other tasks until this task is ready, then
* returns the result of the computation. This method may be more
* efficient than {@code join}, but is only applicable when
- * there are no potemtial dependencies between continuation of the
+ * there are no potential dependencies between continuation of the
* current task and that of any other task that might be executed
* while helping. (This usually holds for pure divide-and-conquer
* tasks). This method may be invoked only from within
* ForkJoinTask computations. Attempts to invoke in other contexts
- * resul!t in exceptions or errors possibly including ClassCastException.
+ * result in exceptions or errors possibly including ClassCastException.
+ *
* @return the computed result
*/
public final V helpJoin() {
@@ -771,7 +785,7 @@ public abstract class ForkJoinTask im
/**
* Possibly executes other tasks until this task is ready. This
* method may be invoked only from within ForkJoinTask
- * computations. Attempts to invoke in other contexts resul!t in
+ * computations. Attempts to invoke in other contexts result in
* exceptions or errors possibly including ClassCastException.
*/
public final void quietlyHelpJoin() {
@@ -839,7 +853,8 @@ public abstract class ForkJoinTask im
/**
* Returns the pool hosting the current task execution, or null
* if this task is executing outside of any pool.
- * @return the pool, or null if none.
+ *
+ * @return the pool, or null if none
*/
public static ForkJoinPool getPool() {
Thread t = Thread.currentThread();
@@ -856,6 +871,7 @@ public abstract class ForkJoinTask im
* were not, stolen. This method may be invoked only from within
* ForkJoinTask computations. Attempts to invoke in other contexts
* result in exceptions or errors possibly including ClassCastException.
+ *
* @return true if unforked
*/
public boolean tryUnfork() {
@@ -867,6 +883,7 @@ public abstract class ForkJoinTask im
* forked by the current worker thread but not yet executed. This
* value may be useful for heuristic decisions about whether to
* fork other tasks.
+ *
* @return the number of tasks
*/
public static int getQueuedTaskCount() {
@@ -875,7 +892,7 @@ public abstract class ForkJoinTask im
}
/**
- * Returns a estimate of how many more locally queued tasks are
+ * Returns an estimate of how many more locally queued tasks are
* held by the current worker thread than there are other worker
* threads that might steal them. This value may be useful for
* heuristic decisions about whether to fork other tasks. In many
@@ -883,6 +900,7 @@ public abstract class ForkJoinTask im
* aim to maintain a small constant surplus (for example, 3) of
* tasks, and to process computations locally if this threshold is
* exceeded.
+ *
* @return the surplus number of tasks, which may be negative
*/
public static int getSurplusQueuedTaskCount() {
@@ -899,7 +917,7 @@ public abstract class ForkJoinTask im
* aid debugging, as well as to support extensions. Its use in any
* other context is discouraged.
*
- * @return the result, or null if not completed.
+ * @return the result, or null if not completed
*/
public abstract V getRawResult();
@@ -920,6 +938,7 @@ public abstract class ForkJoinTask im
* asynchronous actions that require explicit invocations of
* {@code complete} to become joinable. It may throw exceptions
* to indicate abnormal exit.
+ *
* @return true if completed normally
* @throws Error or RuntimeException if encountered during computation
*/
@@ -961,7 +980,7 @@ public abstract class ForkJoinTask im
* queued by the current thread but not yet executed, if one is
* available, or if not available, a task that was forked by some
* other thread, if available. Availability may be transient, so a
- * {@code null} result does not necessarily imply quiecence
+ * {@code null} result does not necessarily imply quiescence
* of the pool this task is operating in. This method is designed
* primarily to support extensions, and is unlikely to be useful
* otherwise. This method may be invoked only from within
@@ -984,7 +1003,7 @@ public abstract class ForkJoinTask im
* Save the state to a stream.
*
* @serialData the current run status and the exception thrown
- * during execution, or null if none.
+ * during execution, or null if none
* @param s the stream
*/
private void writeObject(java.io.ObjectOutputStream s)
@@ -995,6 +1014,7 @@ public abstract class ForkJoinTask im
/**
* Reconstitute the instance from a stream.
+ *
* @param s the stream
*/
private void readObject(java.io.ObjectInputStream s)
@@ -1033,16 +1053,16 @@ public abstract class ForkJoinTask im
private static long fieldOffset(String fieldName)
throws NoSuchFieldException {
- return _unsafe.objectFieldOffset
+ return UNSAFE.objectFieldOffset
(ForkJoinTask.class.getDeclaredField(fieldName));
}
- static final Unsafe _unsafe;
+ static final Unsafe UNSAFE;
static final long statusOffset;
static {
try {
- _unsafe = getUnsafe();
+ UNSAFE = getUnsafe();
statusOffset = fieldOffset("status");
} catch (Throwable e) {
throw new RuntimeException("Could not initialize intrinsics", e);