2644 |
|
* completed. This method is designed for use only in error |
2645 |
|
* recovery actions, and even in such situations may result in |
2646 |
|
* ongoing dependent completions using established versus |
2647 |
< |
* overwritten values. |
2647 |
> |
* overwritten outcomes. |
2648 |
|
* |
2649 |
|
* @param value the completion value |
2650 |
|
*/ |
2653 |
|
postComplete(); |
2654 |
|
} |
2655 |
|
|
2656 |
+ |
/** |
2657 |
+ |
* Forcibly causes subsequent invocations of method get() and |
2658 |
+ |
* related methods to throw the given exception, whether or not |
2659 |
+ |
* already completed. This method is designed for use only in |
2660 |
+ |
* recovery actions, and even in such situations may result in |
2661 |
+ |
* ongoing dependent completions using established versus |
2662 |
+ |
* overwritten outcomes. |
2663 |
+ |
* |
2664 |
+ |
* @param ex the exception |
2665 |
+ |
*/ |
2666 |
+ |
public void obtrudeException(Throwable ex) { |
2667 |
+ |
if (ex == null) throw new NullPointerException(); |
2668 |
+ |
result = new AltResult(ex); |
2669 |
+ |
postComplete(); |
2670 |
+ |
} |
2671 |
+ |
|
2672 |
|
// Unsafe mechanics |
2673 |
|
private static final sun.misc.Unsafe UNSAFE; |
2674 |
|
private static final long RESULT; |