652 |
|
} |
653 |
|
|
654 |
|
/** |
655 |
< |
* Returns true if the computation performed by this task has |
656 |
< |
* completed (or has been cancelled). |
655 |
> |
* Returns {@code true} if the computation performed by this task |
656 |
> |
* has completed (or has been cancelled). |
657 |
|
* |
658 |
< |
* @return true if this computation has completed |
658 |
> |
* @return {@code true} if this computation has completed |
659 |
|
*/ |
660 |
|
public final boolean isDone() { |
661 |
|
return status < 0; |
662 |
|
} |
663 |
|
|
664 |
|
/** |
665 |
< |
* Returns true if this task was cancelled. |
665 |
> |
* Returns {@code true} if this task was cancelled. |
666 |
|
* |
667 |
< |
* @return true if this task was cancelled |
667 |
> |
* @return {@code true} if this task was cancelled |
668 |
|
*/ |
669 |
|
public final boolean isCancelled() { |
670 |
|
return (status & COMPLETION_MASK) == CANCELLED; |
695 |
|
* default implementation because tasks are not in general |
696 |
|
* cancelled via interruption |
697 |
|
* |
698 |
< |
* @return true if this task is now cancelled |
698 |
> |
* @return {@code true} if this task is now cancelled |
699 |
|
*/ |
700 |
|
public boolean cancel(boolean mayInterruptIfRunning) { |
701 |
|
setCompletion(CANCELLED); |
703 |
|
} |
704 |
|
|
705 |
|
/** |
706 |
< |
* Returns true if this task threw an exception or was cancelled. |
706 |
> |
* Returns {@code true} if this task threw an exception or was cancelled. |
707 |
|
* |
708 |
< |
* @return true if this task threw an exception or was cancelled |
708 |
> |
* @return {@code true} if this task threw an exception or was cancelled |
709 |
|
*/ |
710 |
|
public final boolean isCompletedAbnormally() { |
711 |
|
return (status & COMPLETION_MASK) < NORMAL; |
716 |
|
* CancellationException if cancelled, or null if none or if the |
717 |
|
* method has not yet completed. |
718 |
|
* |
719 |
< |
* @return the exception, or null if none |
719 |
> |
* @return the exception, or {@code null} if none |
720 |
|
*/ |
721 |
|
public final Throwable getException() { |
722 |
|
int s = status & COMPLETION_MASK; |
879 |
|
* Returns the pool hosting the current task execution, or null |
880 |
|
* if this task is executing outside of any ForkJoinPool. |
881 |
|
* |
882 |
< |
* @return the pool, or null if none |
882 |
> |
* @return the pool, or {@code null} if none |
883 |
|
*/ |
884 |
|
public static ForkJoinPool getPool() { |
885 |
|
Thread t = Thread.currentThread(); |
910 |
|
* result in exceptions or errors, possibly including |
911 |
|
* ClassCastException. |
912 |
|
* |
913 |
< |
* @return true if unforked |
913 |
> |
* @return {@code true} if unforked |
914 |
|
*/ |
915 |
|
public boolean tryUnfork() { |
916 |
|
return ((ForkJoinWorkerThread) Thread.currentThread()) |
950 |
|
// Extension methods |
951 |
|
|
952 |
|
/** |
953 |
< |
* Returns the result that would be returned by {@code join}, |
954 |
< |
* even if this task completed abnormally, or null if this task is |
955 |
< |
* not known to have been completed. This method is designed to |
956 |
< |
* aid debugging, as well as to support extensions. Its use in any |
957 |
< |
* other context is discouraged. |
953 |
> |
* Returns the result that would be returned by {@link #join}, even |
954 |
> |
* if this task completed abnormally, or {@code null} if this task |
955 |
> |
* is not known to have been completed. This method is designed |
956 |
> |
* to aid debugging, as well as to support extensions. Its use in |
957 |
> |
* any other context is discouraged. |
958 |
|
* |
959 |
< |
* @return the result, or null if not completed |
959 |
> |
* @return the result, or {@code null} if not completed |
960 |
|
*/ |
961 |
|
public abstract V getRawResult(); |
962 |
|
|
975 |
|
* called otherwise. The return value controls whether this task |
976 |
|
* is considered to be done normally. It may return false in |
977 |
|
* asynchronous actions that require explicit invocations of |
978 |
< |
* {@code complete} to become joinable. It may throw exceptions |
978 |
> |
* {@link #complete} to become joinable. It may throw exceptions |
979 |
|
* to indicate abnormal exit. |
980 |
|
* |
981 |
< |
* @return true if completed normally |
981 |
> |
* @return {@code true} if completed normally |
982 |
|
* @throws Error or RuntimeException if encountered during computation |
983 |
|
*/ |
984 |
|
protected abstract boolean exec(); |
994 |
|
* #inForkJoinPool}). Attempts to invoke in other contexts result |
995 |
|
* in exceptions or errors, possibly including ClassCastException. |
996 |
|
* |
997 |
< |
* @return the next task, or null if none are available |
997 |
> |
* @return the next task, or {@code null} if none are available |
998 |
|
*/ |
999 |
|
protected static ForkJoinTask<?> peekNextLocalTask() { |
1000 |
|
return ((ForkJoinWorkerThread) Thread.currentThread()) |
1011 |
|
* contexts result in exceptions or errors, possibly including |
1012 |
|
* ClassCastException. |
1013 |
|
* |
1014 |
< |
* @return the next task, or null if none are available |
1014 |
> |
* @return the next task, or {@code null} if none are available |
1015 |
|
*/ |
1016 |
|
protected static ForkJoinTask<?> pollNextLocalTask() { |
1017 |
|
return ((ForkJoinWorkerThread) Thread.currentThread()) |
1032 |
|
* result in exceptions or errors, possibly including |
1033 |
|
* ClassCastException. |
1034 |
|
* |
1035 |
< |
* @return a task, or null if none are available |
1035 |
> |
* @return a task, or {@code null} if none are available |
1036 |
|
*/ |
1037 |
|
protected static ForkJoinTask<?> pollTask() { |
1038 |
|
return ((ForkJoinWorkerThread) Thread.currentThread()) |
1087 |
|
* Save the state to a stream. |
1088 |
|
* |
1089 |
|
* @serialData the current run status and the exception thrown |
1090 |
< |
* during execution, or null if none |
1090 |
> |
* during execution, or {@code null} if none |
1091 |
|
* @param s the stream |
1092 |
|
*/ |
1093 |
|
private void writeObject(java.io.ObjectOutputStream s) |