クラスForkJoinTask<V>

java.lang.Object
java.util.concurrent.ForkJoinTask<V>
型パラメータ:
V - タスクã®çµæžœã®ã‚¿ã‚¤ãƒ—
ã™ã¹ã¦ã®å®Ÿè£…ã•れãŸã‚¤ãƒ³ã‚¿ãƒ•ェース:
Serializable, Future<V>
ç›´ç³»ã®æ—¢çŸ¥ã®ã‚µãƒ–クラス:
CountedCompleter, RecursiveAction, RecursiveTask

public abstract class ForkJoinTask<V> extends Object implements Future<V>, Serializable
ForkJoinPool内ã§å®Ÿè¡Œã™ã‚‹æŠ½è±¡åŸºåº•クラスã§ã™ã€‚ ForkJoinTaskã¯ã€é€šå¸¸ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‚ˆã‚Šã¯ã‚‹ã‹ã«è»½é‡ãªã€ã‚¹ãƒ¬ãƒƒãƒ‰ã«ä¼¼ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã§ã™ã€‚ ã‚る程度ã®ä½¿ç”¨åˆ¶é™ã‚’犠牲ã«ã—ã¦ã€ForkJoinPool内ã®å°‘ãªã„æ•°ã®å®Ÿéš›ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§ã€è†¨å¤§ãªæ•°ã®ã‚¿ã‚¹ã‚¯ã‚„サブタスクをホストã§ãã¾ã™ã€‚

メインã®ForkJoinTaskã¯ã€ForkJoinPoolã«æ˜Žç¤ºçš„ã«é€ä¿¡ã•れãŸã¨ãã«å®Ÿè¡Œã‚’é–‹å§‹ã—ã¾ã™ã€‚ForkJoinã®è¨ˆç®—ã«ã¾ã é–¢ä¸Žã—ã¦ã„ãªã„å ´åˆã¯ã€fork()ã€invoke()ã¾ãŸã¯é–¢é€£ãƒ¡ã‚½ãƒƒãƒ‰ã‚’介ã—ã¦ForkJoinPool.commonPool()ã§é–‹å§‹ã•れã¾ã™ã€‚ èµ·å‹•ã•れãŸã‚ã¨ã€é€šå¸¸ã¯æ¬¡ã«ã€ã»ã‹ã®ã‚µãƒ–タスクを起動ã—ã¾ã™ã€‚ ã“ã®ã‚¯ãƒ©ã‚¹ã®åå‰ã§ç¤ºã•れã¦ã„るよã†ã«ã€ForkJoinTaskを使用ã—ã¦ã„る多ãã®ãƒ—ログラムã¯fork()メソッドã¨join()メソッドã€ã¾ãŸã¯invokeAllãªã©ã®æ´¾ç”Ÿãƒ¡ã‚½ãƒƒãƒ‰ã®ã¿ã‚’使用ã—ã¾ã™ã€‚ ãŸã ã—ã€ã“ã®ã‚¯ãƒ©ã‚¹ã¯ã¾ãŸã€é«˜åº¦ãªä½¿ç”¨æ–¹æ³•ã§åŠ¹æžœã‚’ç™ºæ®ã™ã‚‹ãã®ä»–ã®ã„ãã¤ã‹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„ã€æ–°ã—ã„å½¢å¼ã®åˆ†å²/çµåˆå‡¦ç†ã®ã‚µãƒãƒ¼ãƒˆã‚’å¯èƒ½ã«ã™ã‚‹æ‹¡å¼µæ©Ÿèƒ½ã‚‚æä¾›ã—ã¾ã™ã€‚

ForkJoinTaskã¯ã€è»½é‡ãªå½¢å¼ã®Futureã§ã™ã€‚ ForkJoinTaskã®åŠ¹çŽ‡ã¯ã€ç´”粋ãªé–¢æ•°ã‚’計算ã™ã‚‹ã‹ã€ã¾ãŸã¯ç´”粋ã«åˆ‡ã‚Šé›¢ã•れãŸã‚ªãƒ–ジェクトã«å¯¾ã—ã¦å‹•作ã™ã‚‹ã¨ã„ã†ã€è¨ˆç®—タスクã¨ã—ã¦ã®ä¸»è¦ãªä½¿ç”¨æ–¹æ³•ã‚’åæ˜ ã™ã‚‹(部分的ã«é™çš„ã«ã—ã‹å¼·åˆ¶ã§ããªã„)一連ã®åˆ¶é™ã‹ã‚‰å¾—られã¾ã™ã€‚ 主ãªèª¿æ•´ãƒ¡ã‚«ãƒ‹ã‚ºãƒ ã«ã¯ã€éžåŒæœŸå®Ÿè¡Œã‚’調整ã™ã‚‹fork()ã‚„ã€ã‚¿ã‚¹ã‚¯ã®çµæžœãŒè¨ˆç®—ã•れるã¾ã§å‡¦ç†ã‚’続行ã—ãªã„join()ãŒã‚りã¾ã™ã€‚ 計算ã¯ã€ç†æƒ³çš„ã«ã¯synchronizedメソッドã¾ãŸã¯ãƒ–ロックを回é¿ã™ã‚‹ã¹ãã§ã‚りã€ã¾ãŸä»–ã®ã‚¿ã‚¹ã‚¯ã®çµåˆã‚„ã€åˆ†å²/çµåˆã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒªãƒ³ã‚°ã¨é€£æºã™ã‚‹ãŸã‚ã«é€šçŸ¥ã•れるPhaserãªã©ã®ã‚·ãƒ³ã‚¯ãƒ­ãƒŠã‚¤ã‚¶ã®ä½¿ç”¨ã‚’除ãã€ãã®ä»–ã®åŒæœŸã®ãƒ–ロックを最å°é™ã«æŠ‘ãˆã‚‹ã¹ãã§ã™ã€‚ 分割å¯èƒ½ãªã‚¿ã‚¹ã‚¯ã‚‚ã¾ãŸã€å…¥å‡ºåŠ›ã®ãƒ–ロックを実行ã™ã‚‹ã¹ãã§ã¯ãªãã€ã¾ãŸç†æƒ³çš„ã«ã¯å®Ÿè¡Œä¸­ã®ä»–ã®ã‚¿ã‚¹ã‚¯ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã•れる変数ã¨ã¯å®Œå…¨ã«ç‹¬ç«‹ã—ã¦ã„る変数ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã¹ãã§ã™ã€‚ ã“れらã®ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã¯ã€IOExceptionsãªã©ã®ãƒã‚§ãƒƒã‚¯ä¾‹å¤–をスローã§ããªã„よã†ã«ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã€ç·©ã‚„ã‹ã«é©ç”¨ã•れã¾ã™ã€‚ ãŸã ã—ã€è¨ˆç®—ã§ã¯ã€çµåˆã—よã†ã¨ã—ã¦ã„る呼出ã—å´ã«å†ã‚¹ãƒ­ãƒ¼ã•れるéžãƒã‚§ãƒƒã‚¯ä¾‹å¤–ãŒå¼•ãç¶šã発生ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã“れらã®ä¾‹å¤–ã«ã¯ã€ã•らã«ã€å†…部タスク・キューã®å‰²å½“ã¦å¤±æ•—ãªã©ã®å†…部リソースã®ä¸è¶³ã«ã‚ˆã£ã¦ç”Ÿæˆã•れるRejectedExecutionExceptionãŒå«ã¾ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ å†ã‚¹ãƒ­ãƒ¼ã•れãŸä¾‹å¤–ã¯é€šå¸¸ã®ä¾‹å¤–ã¨åŒã˜ã‚ˆã†ã«å‹•作ã—ã¾ã™ãŒã€å¯èƒ½ãªå ´åˆã¯ã€è¨ˆç®—ã‚’é–‹å§‹ã—ãŸã‚¹ãƒ¬ãƒƒãƒ‰ã¨å®Ÿéš›ã«ä¾‹å¤–ãŒç™ºç”Ÿã—ã¦ã„るスレッドã®ä¸¡æ–¹(最å°é™ã¨ã—ã¦ã¯å¾Œè€…ã®ã¿)ã®(ãŸã¨ãˆã°ã€ex.printStackTrace()を使用ã—ã¦è¡¨ç¤ºã•れãŸ)スタック・トレースをå«ã¿ã¾ã™ã€‚

ブロックã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹ForkJoinTasksを定義ã—ã¦ä½¿ç”¨ã§ãã¾ã™ãŒã€ã“れを行ã†ã«ã¯ã•らã«3ã¤ã®è€ƒæ…®äº‹é …ãŒå¿…è¦ã§ã™: (1) otherタスクãŒå¤–éƒ¨åŒæœŸã¾ãŸã¯I/Oをブロックã™ã‚‹ã‚¿ã‚¹ã‚¯ã«ä¾å­˜ã™ã‚‹å ´åˆã€å°‘æ•°ã®å®Œäº†ã€‚ çµåˆã•れãªã„イベント形å¼ã®éžåŒæœŸã‚¿ã‚¹ã‚¯(ãŸã¨ãˆã°ã€CountedCompleterをサブクラス化ã™ã‚‹ã‚‚ã®)ã¯ã€å¤šãã®å ´åˆã“ã®ã‚«ãƒ†ã‚´ãƒªã«å…¥ã‚Šã¾ã™ã€‚(2)リソースã¸ã®å½±éŸ¿ã‚’最å°é™ã«æŠ‘ãˆã‚‹ã«ã¯ã€ã‚¿ã‚¹ã‚¯ã‚’å°ã•ãã—ã¦ã€ç†æƒ³çš„ã«ã¯(ãŠãらã)ブロック・アクションã—ã‹å®Ÿè¡Œã—ãªã„よã†ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚(3) ForkJoinPool.ManagedBlocker APIを使用ã—ãªã„å ´åˆã‚„ã€ãƒ–ロックã•れるå¯èƒ½æ€§ãŒã‚ã‚‹ã‚¿ã‚¹ã‚¯ã®æ•°ãŒãƒ—ールã®ForkJoinPool.getParallelism()ã®ãƒ¬ãƒ™ãƒ«ã‚ˆã‚Šå°ã•ã„ã“ã¨ãŒã‚ã‹ã£ã¦ã„ã‚‹å ´åˆã€ãã®ãƒ—ールã§ã¯ã€å‡¦ç†ã®é€²è¡Œã‚„良好ãªãƒ‘フォーマンスを確ä¿ã™ã‚‹ã ã‘ã®å分ãªã‚¹ãƒ¬ãƒƒãƒ‰ãŒä½¿ç”¨ã§ãã‚‹ã“ã¨ã‚’ä¿è¨¼ã§ãã¾ã›ã‚“。

完了を待機ã—ã€ã‚¿ã‚¹ã‚¯ã®çµæžœã‚’抽出ã™ã‚‹ãŸã‚ã®ä¸»è¦ãƒ¡ã‚½ãƒƒãƒ‰ã¯join()ã§ã™ãŒã€ã„ãã¤ã‹ã®ãƒãƒªã‚¢ãƒ³ãƒˆãŒå­˜åœ¨ã—ã¾ã™ã€‚Future.get()メソッドã¯ã€å®Œäº†ã«å¯¾ã™ã‚‹å‰²è¾¼ã¿å¯èƒ½ãªå¾…機ã¾ãŸã¯æ™‚間指定ã•れãŸå¾…機ã€ã‚ã‚‹ã„ã¯ãã®ä¸¡æ–¹ã‚’サãƒãƒ¼ãƒˆã—ã€Futureã®è¦å‰‡ã‚’使用ã—ã¦çµæžœã‚’報告ã—ã¾ã™ã€‚ invoke()メソッドã¯ã€æ„味的ã«ã¯fork(); join()ã¨åŒç­‰ã§ã™ãŒã€å¸¸ã«ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§å®Ÿè¡Œã‚’é–‹å§‹ã—よã†ã¨ã—ã¾ã™ã€‚ ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã®ã€Œéžå‡ºåŠ›ã€å½¢å¼ã¯ã€çµæžœã‚’抽出ã›ãšã€ä¾‹å¤–も報告ã—ã¾ã›ã‚“。 ã“れらã¯ã€ä¸€é€£ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れã¦ã„ã¦ã€ãã®ã™ã¹ã¦ãŒå®Œäº†ã™ã‚‹ã¾ã§çµæžœã¾ãŸã¯ä¾‹å¤–ã®å‡¦ç†ã‚’é…らã›ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã«å½¹ç«‹ã¤ã“ã¨ãŒã‚りã¾ã™ã€‚ invokeAllメソッド(複数ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ä½¿ç”¨å¯èƒ½)ã¯ã€ã‚‚ã£ã¨ã‚‚一般的ãªå½¢å¼ã®ä¸¦åˆ—呼出ã—ã€ã¤ã¾ã‚Šä¸€é€£ã®ã‚¿ã‚¹ã‚¯ã®ãƒ•ォークã¨ã€ãã®ã™ã¹ã¦ã®çµåˆã‚’実行ã—ã¾ã™ã€‚

ã‚‚ã£ã¨ã‚‚一般的ãªç”¨é€”ã§ã¯ã€åˆ†å²/çµåˆãƒšã‚¢ãŒä¸¦åˆ—çš„ãªå†å¸°é–¢æ•°ã‹ã‚‰ã®å‘¼å‡ºã—(分å²)ã¨å¾©å¸°(çµåˆ)ã®ã‚ˆã†ã«å‹•作ã—ã¾ã™ã€‚ ä»–ã®å½¢å¼ã®å†å¸°å‘¼å‡ºã—ã¨åŒæ§˜ã«ã€å¾©å¸°(çµåˆ)ã¯ã‚‚ã£ã¨ã‚‚æ·±ã„ã‚‚ã®ã‚’最åˆã«å®Ÿè¡Œã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ãŸã¨ãˆã°ã€a.fork(); b.fork(); b.join(); a.join();ã¯ã€bã®å‰ã«aã‚’çµåˆã™ã‚‹ã‚ˆã‚Šã€ã‹ãªã‚ŠåŠ¹çŽ‡çš„ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

タスクã®å®Ÿè¡Œã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã€ã„ãã¤ã‹ã®è©³ç´°ãƒ¬ãƒ™ãƒ«ã§ç…§ä¼šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™: isDone()ã¯ã€ã‚¿ã‚¹ã‚¯ãŒãªã‚“らã‹ã®æ–¹æ³•ã§(タスクãŒå®Ÿè¡Œã•れãšã«å–消ã•れãŸå ´åˆ)ã§å®Œäº†ã—ãŸå ´åˆã«ã¯trueã§ã™ã€‚isCompletedNormally()ã¯ã€å–消ã—ã¾ãŸã¯ä¾‹å¤–ãŒç™ºç”Ÿã›ãšã«å®Œäº†ã—ãŸå ´åˆã«ã¯trueã§ã™ã€‚isCancelled()ã¯ã€ã‚¿ã‚¹ã‚¯ãŒ(ã“ã®å ´åˆã€getException(boolean)ã¯CancellationExceptionã‚’è¿”ã—ã¾ã™ã€‚)ã§å–り消ã•れãŸå ´åˆã«ã¯trueã§ã€ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れãŸå ´åˆã¾ãŸã¯ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã¯isCompletedAbnormally()ãŒtrueã§ã™ã€‚ã“ã®å ´åˆã€getException(boolean)ã¯ã€æ¤œå‡ºã•れãŸä¾‹å¤–ã¾ãŸã¯CancellationExceptionã‚’è¿”ã—ã¾ã™ã€‚

ForkJoinTaskクラスã¯é€šå¸¸ã€ç›´æŽ¥ã«ã¯ã‚µãƒ–クラス化ã•れã¾ã›ã‚“。 ã‹ã‚りã«ã€ç‰¹å®šã®ã‚¹ã‚¿ã‚¤ãƒ«ã®åˆ†å²/çµåˆå‡¦ç†ã‚’サãƒãƒ¼ãƒˆã™ã‚‹æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®ã„ãšã‚Œã‹ã‚’サブクラス化ã—ã¾ã™ã€‚ã“れã¯é€šå¸¸ã€çµæžœã‚’è¿”ã•ãªã„ã»ã¨ã‚“ã©ã®è¨ˆç®—ã®å ´åˆã¯RecursiveActionã€çµæžœã‚’è¿”ã™è¨ˆç®—ã®å ´åˆã¯RecursiveTaskã€å®Œäº†ã—ãŸã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒä»–ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’トリガーã™ã‚‹è¨ˆç®—ã®å ´åˆã¯CountedCompleterã§ã™ã€‚ 通常ã€å…·è±¡ForkJoinTaskサブクラスã¯ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§ç¢ºç«‹ã•れãŸãƒ‘ラメータã‹ã‚‰æˆã‚‹ãƒ•ィールドを宣言ã—ã¦ã‹ã‚‰ã€ã“ã®åŸºåº•クラスã«ã‚ˆã£ã¦æä¾›ã•れる制御メソッドを何らã‹ã®æ–¹æ³•ã§ä½¿ç”¨ã™ã‚‹computeメソッドを定義ã—ã¾ã™ã€‚

join()メソッドã¨ãã®ãƒãƒªã‚¢ãƒ³ãƒˆãŒä½¿ç”¨ã«é©ã—ã¦ã„ã‚‹ã®ã¯ã€å®Œäº†ã®ä¾å­˜é–¢ä¿‚ãŒéžå¾ªç’°å¼ã§ã‚ã‚‹å ´åˆã€ã¤ã¾ã‚Šã€ä¸¦åˆ—計算を無閉路有å‘グラフ(DAG)ã¨ã—ã¦è¨˜è¿°ã§ãã‚‹å ´åˆã ã‘ã§ã™ã€‚ ãれ以外ã®å ´åˆã¯ã€ã‚¿ã‚¹ã‚¯ãŒå¾ªç’°çš„ã«äº’ã„を待機ã™ã‚‹ãŸã‚ã€å®Ÿè¡Œã«ã‚ˆã£ã¦ã‚る種ã®ãƒ‡ãƒƒãƒ‰ãƒ­ãƒƒã‚¯ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ãŸã ã—ã€ã“ã®ãƒ•レームワークã§ã¯ã€DAGã¨ã—ã¦é™çš„ã«æ§‹é€ åŒ–ã•れãªã„å•題ã®ãŸã‚ã®ã‚«ã‚¹ã‚¿ãƒ ãƒ»ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã®æ§‹ç¯‰ã«å½¹ç«‹ã¤å¯èƒ½æ€§ã®ã‚ã‚‹ãã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„手法(ãŸã¨ãˆã°ã€Phaserã€helpQuiesce()ã€ãŠã‚ˆã³complete(V)ã®ä½¿ç”¨)ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚ ã“ã®ã‚ˆã†ãªç”¨é€”をサãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã€setForkJoinTaskTag(short)ã¾ãŸã¯compareAndSetForkJoinTaskTag(short, short)を使用ã—ã¦ForkJoinTaskã‚’short値ã§åŽŸå­çš„ã«ã‚¿ã‚°ä»˜ã‘ã—ã€getForkJoinTaskTag()を使用ã—ã¦ç¢ºèªã§ãã¾ã™ã€‚ ForkJoinTaskã®å®Ÿè£…ã§ã¯ã€ã“れらã®protectedメソッドã¾ãŸã¯ã‚¿ã‚°ã¯ã©ã®ã‚ˆã†ãªç›®çš„ã«ã‚‚使用ã•れã¾ã›ã‚“ãŒã€ç‰¹åŒ–ã•れãŸã‚µãƒ–クラスを構築ã™ã‚‹ã¨ãã«å½¹ç«‹ã¤å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ãŸã¨ãˆã°ã€ä¸¦åˆ—çš„ãªã‚°ãƒ©ãƒ•ã®ãƒˆãƒ©ãƒãƒ¼ã‚¹ã§ã¯ã€æŒ‡å®šã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã—ã¦ã€ã™ã§ã«å‡¦ç†ã•れã¦ã„るノードã¾ãŸã¯ã‚¿ã‚¹ã‚¯ã®å†ãƒã‚§ãƒƒã‚¯ã‚’回é¿ã§ãã¾ã™ã€‚ (タグ付ã‘ã®ãƒ¡ã‚½ãƒƒãƒ‰åã¯éƒ¨åˆ†çš„ã«å¤§ãããªã‚‹ãŸã‚ã€ãれãžã‚Œã®ä½¿ç”¨ãƒ‘ã‚¿ãƒ¼ãƒ³ã‚’åæ˜ ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’定義ã™ã‚‹ã“ã¨ã‚’ãŠè–¦ã‚ã—ã¾ã™ã€‚)

基本ã¨ãªã‚‹è»½é‡ã‚¿ã‚¹ã‚¯ãƒ»ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒªãƒ³ã‚°ãƒ»ãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯ã«æœ¬è³ªçš„ã«çµã³ä»˜ã‘られãŸå®Ÿè£…ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚’回é¿ã™ã‚‹ãŸã‚ã«ã€ã»ã¨ã‚“ã©ã®åŸºæœ¬ã‚µãƒãƒ¼ãƒˆãƒ»ãƒ¡ã‚½ãƒƒãƒ‰ã¯finalã§ã™ã€‚ æ–°ã—ã„基本的ãªã‚¹ã‚¿ã‚¤ãƒ«ã®åˆ†å²/çµåˆå‡¦ç†ã‚’作æˆã—ã¦ã„る開発者ã¯ã€protectedメソッドã€exec()ã€setRawResult(V)ã€ãŠã‚ˆã³getRawResult()ã®å®Ÿè£…を最å°é™ã«ã™ã‚‹ä¸€æ–¹ã§ã€ãã®ã‚µãƒ–クラスã§(ãŠãらãã€ã“ã®ã‚¯ãƒ©ã‚¹ã«ã‚ˆã£ã¦æä¾›ã•れるã»ã‹ã®protectedメソッドを使用ã—ã¦)実装ã§ãる抽象計算メソッドも導入ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。

ForkJoinTaskã§ã¯ã€æ¯”較的少ãªã„é‡ã®è¨ˆç®—を実行ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 大ããªã‚¿ã‚¹ã‚¯ã¯ã€é€šå¸¸ã¯å†å¸°çš„分解を使用ã—ã¦ã€ã‚ˆã‚Šå°ã•ãªã‚µãƒ–タスクã«åˆ†å‰²ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 éžå¸¸ã«å¤§ã¾ã‹ãªçµŒé¨“則ã¨ã—ã¦ã€1ã¤ã®ã‚¿ã‚¹ã‚¯ã§ã¯100より多ã10000より少ãªã„基本的ãªè¨ˆç®—ステップを実行ã™ã‚‹ã‚ˆã†ã«ã—ã€ç„¡æœŸé™ãƒ«ãƒ¼ãƒ—を回é¿ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 タスクãŒå¤§ãã™ãŽã‚‹ã¨ã€ä¸¦åˆ—性ã«ã‚ˆã£ã¦ã‚¹ãƒ«ãƒ¼ãƒ—ットをå‘上ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 å°ã•ã™ãŽã‚‹ã¨ã€ãƒ¡ãƒ¢ãƒªãƒ¼ã‚„内部タスクä¿å®ˆã®ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ã«ã‚ˆã£ã¦å‡¦ç†åŠ¹çŽ‡ãŒä½Žä¸‹ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

ã“ã®ã‚¯ãƒ©ã‚¹ã¯ã€ForkJoinTasksã®å®Ÿè¡Œã‚’ã»ã‹ã®ç¨®é¡žã®ã‚¿ã‚¹ã‚¯ã¨æ··åœ¨ã•ã›ã‚‹ã¨ãã«å½¹ç«‹ã¤å¯èƒ½æ€§ã®ã‚ã‚‹ã€RunnableãŠã‚ˆã³Callableã®ãŸã‚ã®adaptメソッドをæä¾›ã—ã¾ã™ã€‚ ã™ã¹ã¦ã®ã‚¿ã‚¹ã‚¯ãŒã“ã®å½¢å¼ã§ã‚ã‚‹å ´åˆã¯ã€asyncModeã§æ§‹ç¯‰ã•れãŸãƒ—ールã®ä½¿ç”¨ã‚’検討ã—ã¦ãã ã•ã„。

ForkJoinTaskã¯Serializableã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒªãƒ¢ãƒ¼ãƒˆå®Ÿè¡Œãƒ•レームワークãªã©ã®æ‹¡å¼µæ©Ÿèƒ½ã§ä½¿ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ タスクã®ç›´åˆ—化ã¯ã€å®Ÿè¡Œä¸­ã§ã¯ãªãã€å®Ÿè¡Œã®å‰ã¾ãŸã¯ã‚ã¨ã«ã®ã¿è¡Œã†ã®ãŒé©åˆ‡ã§ã™ã€‚ 実行中ã¯ç›´åˆ—化自体ãŒä½¿ç”¨ã•れã¾ã›ã‚“。

å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
1.7
関連項目:
  • ãƒã‚¹ãƒˆã•れãŸã‚¯ãƒ©ã‚¹ã®ã‚µãƒžãƒªãƒ¼

    インタフェースjava.util.concurrent.Futureã§å®£è¨€ã•れãŸãƒã‚¹ãƒˆã•れãŸã‚¯ãƒ©ã‚¹/インタフェース

    Future.State
  • コンストラクタã®ã‚µãƒžãƒªãƒ¼

    コンストラクタ
    コンストラクタ
    説明
    サブクラスãŒå‘¼ã³å‡ºã™ãŸã‚ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã€‚
  • メソッドã®ã‚µãƒžãƒªãƒ¼

    修飾å­ã¨åž‹
    メソッド
    説明
    static ForkJoinTask<?>
    adapt(Runnable runnable)
    指定ã•れãŸRunnableã®runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()実行時ã«nullã®çµæžœã‚’è¿”ã—ã¾ã™ã€‚
    static <T> ForkJoinTask<T>
    adapt(Runnable runnable, T result)
    指定ã•れãŸRunnableã®runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()å®Ÿè¡Œæ™‚ã«æŒ‡å®šã•れãŸçµæžœã‚’è¿”ã—ã¾ã™ã€‚
    static <T> ForkJoinTask<T>
    adapt(Callable<? extends T> callable)
    指定ã•れãŸCallableã®callメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€ãã®çµæžœã‚’join()実行時ã«è¿”ã—ã€ç™ºç”Ÿã—ãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚
    static ForkJoinTask<?>
    指定ã•れãŸRunnableã® runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()ã§nullã‚’è¿”ã—ã€æ¤œå‡ºã•れãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚
    static <T> ForkJoinTask<T>
    adaptInterruptible(Runnable runnable, T result)
    指定ã•れãŸRunnableã®runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()ã§æŒ‡å®šã—ãŸçµæžœã‚’è¿”ã—ã€æ¤œå‡ºã•れãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚
    static <T> ForkJoinTask<T>
    adaptInterruptible(Callable<? extends T> callable)
    指定ã•れãŸCallableã®callメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€ãã®çµæžœã‚’join()実行時ã«è¿”ã—ã€ç™ºç”Ÿã—ãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚
    boolean
    cancel(boolean mayInterruptIfRunning)
    ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã®å–消ã—を試ã¿ã¾ã™ã€‚
    final boolean
    compareAndSetForkJoinTaskTag(short expect, short update)
    ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°å€¤ã‚’原å­çš„ã«æ¡ä»¶ä»˜ãã§è¨­å®šã—ã¾ã™ã€‚
    void
    complete(V value)
    ã“ã®ã‚¿ã‚¹ã‚¯ã‚’実行ã—ã€ä¸­æ–­ã¾ãŸã¯å–り消ã—ã•れã¦ã„ãªã„å ´åˆã€joinã®å¾Œç¶šã®å‘¼ã³å‡ºã—ãŠã‚ˆã³é–¢é€£ã®æ“作ã®çµæžœã¨ã—ã¦æŒ‡å®šã•れãŸå€¤ã‚’è¿”ã—ã¾ã™ã€‚
    void
    ã“ã®ã‚¿ã‚¹ã‚¯ã‚’強制的ã«å®Ÿè¡Œã—ã€ä¸­æ–­ã¾ãŸã¯å–り消ã—ã•れã¦ã„ãªã„å ´åˆã¯ã€joinãŠã‚ˆã³é–¢é€£ã®æ“作ã®å®Ÿè¡Œæ™‚ã«æŒ‡å®šã•れãŸä¾‹å¤–ãŒã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚
    待機ã›ãšã«ã‚¿ã‚¹ã‚¯ã«ã‚ˆã£ã¦ã‚¹ãƒ­ãƒ¼ã•れãŸä¾‹å¤–ã‚’è¿”ã—ã¾ã™ã€‚
    protected abstract boolean
    ã“ã®ã‚¿ã‚¹ã‚¯ã®ãƒ™ãƒ¼ã‚¹å‡¦ç†ã‚’ãŸã ã¡ã«å®Ÿè¡Œã—ã€trueã‚’è¿”ã—ã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰æˆ»ã£ãŸå ´åˆã€ã“ã®ã‚¿ã‚¹ã‚¯ã¯å®Œäº†ã—ã¦ã„ã‚‹ã“ã¨ãŒä¿è¨¼ã•れã¾ã™ã€‚
    ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れã¦ã„るプール内ã§ã“ã®ã‚¿ã‚¹ã‚¯ã‚’éžåŒæœŸã§å®Ÿè¡Œã™ã‚‹ã‚ˆã†ã«èª¿æ•´ã—ã¾ã™(該当ã™ã‚‹å ´åˆ)。inForkJoinPool()ã§ãªã„å ´åˆã¯ã€ForkJoinPool.commonPool()を使用ã—ã¾ã™ã€‚
    final V
    get()
    å¿…è¦ã«å¿œã˜ã¦è¨ˆç®—ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…機ã—ã€ãã®å¾Œã€è¨ˆç®—çµæžœã‚’å–å¾—ã—ã¾ã™ã€‚
    final V
    get(long timeout, TimeUnit unit)
    å¿…è¦ã«å¿œã˜ã¦ã€æœ€å¤§ã§æŒ‡å®šã•ã‚ŒãŸæ™‚é–“ã€è¨ˆç®—ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…機ã—ã€ãã®å¾Œã€è¨ˆç®—çµæžœãŒåˆ©ç”¨å¯èƒ½ãªå ´åˆã¯çµæžœã‚’å–å¾—ã—ã¾ã™ã€‚
    final Throwable
    基本計算ã«ã‚ˆã£ã¦ã‚¹ãƒ­ãƒ¼ã•れãŸä¾‹å¤–ã‚’è¿”ã—ã¾ã™ã€‚å–り消ã•れãŸå ´åˆã¯CancellationExceptionã€ãªã„å ´åˆã¾ãŸã¯ãƒ¡ã‚½ãƒƒãƒ‰ãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„å ´åˆã¯nullã‚’è¿”ã—ã¾ã™ã€‚
    final short
    ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°ã‚’è¿”ã—ã¾ã™ã€‚
    ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’ホストã—ã¦ã„るプールを返ã—ã¾ã™ã€‚ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã®å¤–部ã§å®Ÿè¡Œã•れã¦ã„ã‚‹å ´åˆã¯ã€nullã‚’è¿”ã—ã¾ã™ã€‚
    static int
    ç¾åœ¨ã®ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ»ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ãƒ•ォークã•れãŸãŒã€ã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„ã‚¿ã‚¹ã‚¯ã®æŽ¨å®šæ•°ã‚’è¿”ã—ã¾ã™ã€‚
    abstract V
    ã“ã®ã‚¿ã‚¹ã‚¯ãŒç•°å¸¸ãªçŠ¶æ…‹ã§å®Ÿè¡Œã•れãŸå ´åˆã§ã‚ã£ã¦ã‚‚ã€join()ã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹çµæžœã‚’è¿”ã—ã¾ã™ã€‚ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れãŸã‹ã©ã†ã‹ãŒä¸æ˜Žã®å ´åˆã¯ã€nullã§ã™ã€‚
    static int
    ç¾åœ¨ã®ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ»ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ä¿æŒã•れã¦ã„るローカルã®ã‚­ãƒ¥ãƒ¼ã«å…¥ã£ã¦ã„るタスクãŒã€ãれを横å–りã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ä»–ã®ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ»ã‚¹ãƒ¬ãƒƒãƒ‰ã‚ˆã‚Šã‚‚ã©ã‚Œã ã‘多ã„ã‹ã®æŽ¨å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚ã“ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ã„ãªã„å ´åˆã¯ã‚¼ãƒ­ã‚’è¿”ã—ã¾ã™ã€‚
    static void
    ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã€Œé™æ­¢ã€ã‚’ホストã™ã‚‹ãƒ—ールã¾ã§ã€ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
    static boolean
    ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒã€ForkJoinPool計算ã¨ã—ã¦å®Ÿè¡Œã•れるForkJoinWorkerThreadã®å ´åˆã€trueã‚’è¿”ã—ã¾ã™ã€‚
    final V
    ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚’é–‹å§‹ã—ã€å¿…è¦ãªå ´åˆã¯å®Œäº†ã¾ã§å¾…機ã—ã€ãã®çµæžœã‚’è¿”ã™ã‹ã€åŸºæœ¬ã¨ãªã‚‹è¨ˆç®—ãŒãã†ã§ã‚ã‚‹å ´åˆã¯ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„) RuntimeExceptionã¾ãŸã¯Errorをスローã—ã¾ã™ã€‚
    static <T extends ForkJoinTask<?>>
    Collection<T>
    指定ã•れãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å†…ã®ã™ã¹ã¦ã®ã‚¿ã‚¹ã‚¯ã‚’フォークã—ã€å„タスクã«å¯¾ã—ã¦isDoneãŒé©ç”¨ã•れるã‹ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„)例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã«å¾©å¸°ã—ã¾ã™ã€‚後者ã®å ´åˆã€ä¾‹å¤–ãŒå†ã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚
    static void
    invokeAll(ForkJoinTask<?>... tasks)
    指定ã•れãŸã‚¿ã‚¹ã‚¯ã‚’フォークã—ã€å„タスクã«å¯¾ã—ã¦isDoneãŒé©ç”¨ã•れるã‹ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„)例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã«å¾©å¸°ã—ã¾ã™ã€‚後者ã®å ´åˆã€ä¾‹å¤–ãŒå†ã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚
    static void
    指定ã•れãŸã‚¿ã‚¹ã‚¯ã‚’フォークã—ã€å„タスクã«å¯¾ã—ã¦isDoneãŒé©ç”¨ã•れるã‹ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„)例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã«å¾©å¸°ã—ã¾ã™ã€‚後者ã®å ´åˆã€ä¾‹å¤–ãŒå†ã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚
    final boolean
    ã“ã®ã‚¿ã‚¹ã‚¯ãŒæ­£å¸¸ã«å®Œäº†ã™ã‚‹å‰ã«å–り消ã•れãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
    final boolean
    ã“ã®ã‚¿ã‚¹ã‚¯ãŒä¾‹å¤–をスローã—ãŸã‹å–り消ã•れãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
    final boolean
    ã“ã®ã‚¿ã‚¹ã‚¯ãŒä¾‹å¤–をスローã›ãšã«å®Œäº†ã—ã€å–り消ã•れãªã‹ã£ãŸå ´åˆã¯trueãŒè¿”ã•れã¾ã™ã€‚
    final boolean
    ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã—ãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
    final V
    「完了ã€ã®å ´åˆã®è¨ˆç®—çµæžœã‚’è¿”ã—ã¾ã™ã€‚
    protected static ForkJoinTask<?>
    ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ã‚­ãƒ¥ãƒ¼ã«å…¥ã‚Œã‚‰ã‚ŒãŸãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„タスクãŒã™ãã«ä½¿ç”¨ã§ãã‚‹å ´åˆã€ãã®ã‚¿ã‚¹ã‚¯ã‚’è¿”ã—ã€ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã‚„実行ã¯è¡Œã„ã¾ã›ã‚“。
    protected static ForkJoinTask<?>
    ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ã„ã‚‹å ´åˆã«ã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ã‚­ãƒ¥ãƒ¼ã«å…¥ã‚Œã‚‰ã‚ŒãŸãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„次ã®ã‚¿ã‚¹ã‚¯ã‚’ã€å®Ÿè¡Œã›ãšã«ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã—ã¦å¾©å¸°ã—ã¾ã™ã€‚
    protected static ForkJoinTask<?>
    ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ã„ã‚‹å ´åˆã€ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’解除ã—ã€å®Ÿè¡Œã›ãšã«ã€ãƒ—ールã«å¤–部ã«é€ä¿¡ã•れãŸã‚¿ã‚¹ã‚¯(使用å¯èƒ½ãªå ´åˆ)ã‚’è¿”ã—ã¾ã™ã€‚
    protected static ForkJoinTask<?>
    ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ãŠã‚Šã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ã‚­ãƒ¥ãƒ¼ã«å…¥ã‚Œã‚‰ã‚ŒãŸãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„次ã®ã‚¿ã‚¹ã‚¯ãŒä½¿ç”¨å¯èƒ½ãªå ´åˆã€ãã®ã‚¿ã‚¹ã‚¯ã‚’実行ã›ãšã«ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã—ã¦å¾©å¸°ã—ã¾ã™ã€‚ãã®ã‚ˆã†ãªã‚¿ã‚¹ã‚¯ãŒä½¿ç”¨å¯èƒ½ã§ãªã„å ´åˆã¯ã€ä»–ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ãƒ•ォークã•れãŸã‚¿ã‚¹ã‚¯ãŒå¯¾è±¡ã«ãªã‚Šã¾ã™(使用å¯èƒ½ãªå ´åˆ)。
    final void
    値を設定ã›ãšã«ã“ã®ã‚¿ã‚¹ã‚¯ã‚’正常ã«å®Œäº†ã—ã¾ã™ã€‚
    final void
    ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚’é–‹å§‹ã—ã€å¿…è¦ãªå ´åˆã¯å®Œäº†ã¾ã§å¾…機ã—ã¾ã™ãŒã€ãã®çµæžœã‚’è¿”ã—ãŸã‚Šä¾‹å¤–をスローã—ãŸã‚Šã—ã¾ã›ã‚“。
    final void
    ã“ã®ã‚¿ã‚¹ã‚¯ã‚’çµåˆã—ã€ãã®çµæžœã‚’è¿”ã—ãŸã‚Šä¾‹å¤–をスローã—ãŸã‚Šã—ã¾ã›ã‚“。
    final boolean
    quietlyJoin(long timeout, TimeUnit unit)
    ã“ã®ã‚¿ã‚¹ã‚¯ã¸ã®å‚加を試ã¿ã¾ã™ã€‚指定ã•れãŸã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒçµŒéŽã—ã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒä¸­æ–­ã•れã¦ã„ãªã„ã¨ãã«(例外的ã«)ãŒå®Œäº†ã—ãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
    final boolean
    quietlyJoinUninterruptibly(long timeout, TimeUnit unit)
    ã“ã®ã‚¿ã‚¹ã‚¯ã¸ã®å‚加を試ã¿ã¾ã™ã€‚指定ã•れãŸã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒçµŒéŽã™ã‚‹å‰ã«(例外的ã«)を完了ã—ãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
    void
    ã“ã®ã‚¿ã‚¹ã‚¯ã®å†…部登録状態をリセットã—ã€å¾Œç¶šã®forkを許å¯ã—ã¾ã™ã€‚
    計算ã•れãŸçµæžœã‚’å¾…ãŸãšã«è¿”ã—ã¾ã™ã€‚
    final short
    setForkJoinTaskTag(short newValue)
    ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°å€¤ã‚’原å­çš„ã«è¨­å®šã—ã€å¤ã„値を返ã—ã¾ã™ã€‚
    protected abstract void
    setRawResult(V value)
    指定ã•れãŸå€¤ã‚’çµæžœã¨ã—ã¦è¿”ã™ã“ã¨ã‚’強制ã—ã¾ã™ã€‚
    計算状態を返ã—ã¾ã™ã€‚
    boolean
    ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã‚’試ã¿ã¾ã™ã€‚

    クラスjava.lang.Objectã§å®£è¨€ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタã®è©³ç´°

    • ForkJoinTask

      public ForkJoinTask()
      サブクラスãŒå‘¼ã³å‡ºã™ãŸã‚ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã€‚
  • メソッドã®è©³ç´°

    • fork

      public final ForkJoinTask<V> fork()
      ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れã¦ã„るプール内ã§ã“ã®ã‚¿ã‚¹ã‚¯ã‚’éžåŒæœŸã§å®Ÿè¡Œã™ã‚‹ã‚ˆã†ã«èª¿æ•´ã—ã¾ã™(該当ã™ã‚‹å ´åˆ)。inForkJoinPool()ã§ãªã„å ´åˆã¯ã€ForkJoinPool.commonPool()を使用ã—ã¾ã™ã€‚ å¿…ãšã—ã‚‚é©ç”¨ã•れるã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã—ã¦å†åˆæœŸåŒ–ã•れãªã„ã‹ãŽã‚Šã€ã‚¿ã‚¹ã‚¯ã‚’複数回フォークã™ã‚‹ã“ã¨ã¯ä½¿ç”¨æ–¹æ³•ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚ join()や関連ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å‘¼ã³å‡ºã—や〠trueã‚’è¿”ã™isDone()ã®å‘¼ã³å‡ºã—ãŒå…ˆè¡Œã•れã¦ã„ãªã„é™ã‚Šã€ã“ã®ã‚¿ã‚¹ã‚¯ã®çŠ¶æ…‹ã‚„ãã‚ŒãŒæ“作ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®å¾Œç¶šã®å¤‰æ›´ã¯ã€ãれを実行ã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ä»¥å¤–ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦å¿…ãšã—も常ã«è¦³æ¸¬ã•れるã¨ã¯é™ã‚Šã¾ã›ã‚“。
      戻り値:
      thisã€ä½¿ç”¨æ–¹æ³•ã‚’å˜ç´”化ã™ã‚‹ãŸã‚
    • join

      public final V join()
      「完了ã€ã®å ´åˆã®è¨ˆç®—çµæžœã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ç•°å¸¸ãªå®Œäº†ã«ã‚ˆã£ã¦ExecutionExceptionã§ã¯ãªãã€RuntimeExceptionã¾ãŸã¯ErrorãŒç™ºç”Ÿã™ã‚‹ç‚¹ã€ãŠã‚ˆã³å‘¼å‡ºã—å´ã‚¹ãƒ¬ãƒƒãƒ‰ã®å‰²ã‚Šè¾¼ã¿ã®ãŸã‚ã«ãƒ¡ã‚½ãƒƒãƒ‰ãŒInterruptedExceptionをスローã—ã¦çªç„¶å¾©å¸°ã™ã‚‹ã“ã¨ãŒãªã„ã¨ã„ã†ç‚¹ã§ã€get()ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚
      戻り値:
      è¨ˆç®—çµæžœ
    • invoke

      public final V invoke()
      ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚’é–‹å§‹ã—ã€å¿…è¦ãªå ´åˆã¯å®Œäº†ã¾ã§å¾…機ã—ã€ãã®çµæžœã‚’è¿”ã™ã‹ã€åŸºæœ¬ã¨ãªã‚‹è¨ˆç®—ãŒãã†ã§ã‚ã‚‹å ´åˆã¯ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„) RuntimeExceptionã¾ãŸã¯Errorをスローã—ã¾ã™ã€‚
      戻り値:
      è¨ˆç®—çµæžœ
    • invokeAll

      public static void invokeAll(ForkJoinTask<?> t1, ForkJoinTask<?> t2)
      指定ã•れãŸã‚¿ã‚¹ã‚¯ã‚’フォークã—ã€å„タスクã«å¯¾ã—ã¦isDoneãŒé©ç”¨ã•れるã‹ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„)例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã«å¾©å¸°ã—ã¾ã™ã€‚後者ã®å ´åˆã€ä¾‹å¤–ãŒå†ã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚ 複数ã®ã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹å ´åˆã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã“れらã®ã„ãšã‚Œã‹ã®ä¾‹å¤–をスローã—ã¾ã™ã€‚ ã„ãšã‚Œã‹ã®ã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã€ã»ã‹ã®ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ ãŸã ã—ã€å€‹ã€…ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ä¾‹å¤–ãŒè¿”ã•ã‚ŒãŸæ™‚点ã§ä¿è¨¼ã•れã¾ã›ã‚“。 å„タスクã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã€ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れãŸã‹ã€æ­£å¸¸ã«å®Œäº†ã—ãŸã‹ã€ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸã‹ã€æœªå‡¦ç†ã®ã¾ã¾ã‹ã‚’確èªã™ã‚‹ãŸã‚ã®ã€getException()ãŠã‚ˆã³é–¢é€£ãƒ¡ã‚½ãƒƒãƒ‰ã«ã‚ˆã£ã¦å–å¾—ã§ãã¾ã™ã€‚
      パラメータ:
      t1 - 最åˆã®ã‚¿ã‚¹ã‚¯
      t2 - 2番目ã®ã‚¿ã‚¹ã‚¯
      スロー:
      NullPointerException - ã„ãšã‚Œã‹ã®ã‚¿ã‚¹ã‚¯ãŒnullã®å ´åˆ
    • invokeAll

      public static void invokeAll(ForkJoinTask<?>... tasks)
      指定ã•れãŸã‚¿ã‚¹ã‚¯ã‚’フォークã—ã€å„タスクã«å¯¾ã—ã¦isDoneãŒé©ç”¨ã•れるã‹ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„)例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã«å¾©å¸°ã—ã¾ã™ã€‚後者ã®å ´åˆã€ä¾‹å¤–ãŒå†ã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚ 複数ã®ã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹å ´åˆã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã“れらã®ã„ãšã‚Œã‹ã®ä¾‹å¤–をスローã—ã¾ã™ã€‚ ã„ãšã‚Œã‹ã®ã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã€ã»ã‹ã®ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れる場åˆãŒã‚りã¾ã™ã€‚ ãŸã ã—ã€å€‹ã€…ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ä¾‹å¤–ãŒè¿”ã•ã‚ŒãŸæ™‚点ã§ä¿è¨¼ã•れã¾ã›ã‚“。 å„タスクã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã€ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れãŸã‹ã€æ­£å¸¸ã«å®Œäº†ã—ãŸã‹ã€ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸã‹ã€æœªå‡¦ç†ã®ã¾ã¾ã‹ã‚’確èªã™ã‚‹ãŸã‚ã®ã€getException()ãŠã‚ˆã³é–¢é€£ãƒ¡ã‚½ãƒƒãƒ‰ã«ã‚ˆã£ã¦å–å¾—ã§ãã¾ã™ã€‚
      パラメータ:
      tasks - タスク
      スロー:
      NullPointerException - ã„ãšã‚Œã‹ã®ã‚¿ã‚¹ã‚¯ãŒnullã®å ´åˆ
    • invokeAll

      public static <T extends ForkJoinTask<?>> Collection<T> invokeAll(Collection<T> tasks)
      指定ã•れãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å†…ã®ã™ã¹ã¦ã®ã‚¿ã‚¹ã‚¯ã‚’フォークã—ã€å„タスクã«å¯¾ã—ã¦isDoneãŒé©ç”¨ã•れるã‹ã€(ãƒã‚§ãƒƒã‚¯ã•れãªã„)例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã«å¾©å¸°ã—ã¾ã™ã€‚後者ã®å ´åˆã€ä¾‹å¤–ãŒå†ã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚ 複数ã®ã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹å ´åˆã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã“れらã®ã„ãšã‚Œã‹ã®ä¾‹å¤–をスローã—ã¾ã™ã€‚ ã„ãšã‚Œã‹ã®ã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã€ã»ã‹ã®ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れる場åˆãŒã‚りã¾ã™ã€‚ ãŸã ã—ã€å€‹ã€…ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ä¾‹å¤–ãŒè¿”ã•ã‚ŒãŸæ™‚点ã§ä¿è¨¼ã•れã¾ã›ã‚“。 å„タスクã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã€ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れãŸã‹ã€æ­£å¸¸ã«å®Œäº†ã—ãŸã‹ã€ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸã‹ã€æœªå‡¦ç†ã®ã¾ã¾ã‹ã‚’確èªã™ã‚‹ãŸã‚ã®ã€getException()ãŠã‚ˆã³é–¢é€£ãƒ¡ã‚½ãƒƒãƒ‰ã«ã‚ˆã£ã¦å–å¾—ã§ãã¾ã™ã€‚
      型パラメータ:
      T - タスクã‹ã‚‰è¿”ã•れる値ã®ã‚¿ã‚¤ãƒ—
      パラメータ:
      tasks - タスクã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³
      戻り値:
      タスクã®å¼•æ•°ã€ä½¿ç”¨æ–¹æ³•ã‚’å˜ç´”化ã™ã‚‹ãŸã‚
      スロー:
      NullPointerException - タスクã¾ãŸã¯ã„ãšã‚Œã‹ã®è¦ç´ ãŒnullã®å ´åˆ
    • cancel

      public boolean cancel(boolean mayInterruptIfRunning)
      ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã®å–消ã—を試ã¿ã¾ã™ã€‚ タスクãŒã™ã§ã«å®Œäº†ã—ãŸã‹ã€ã¾ãŸã¯ãã®ä»–ã®ä½•らã‹ã®ç†ç”±ã§å–り消ã™ã“ã¨ãŒã§ããªã‹ã£ãŸå ´åˆã€ã“ã®è©¦ã¿ã¯å¤±æ•—ã—ã¾ã™ã€‚ ã“ã®è©¦ã¿ãŒæˆåŠŸã—ã€cancelãŒå‘¼ã³å‡ºã•れãŸã¨ãã«ã“ã®ã‚¿ã‚¹ã‚¯ãŒèµ·å‹•ã•れã¦ã„ãªã„å ´åˆã€ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã¯æŠ‘制ã•れã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒæ­£å¸¸ã«å¾©å¸°ã—ãŸã‚ã¨ã¯ã€reinitialize()ã¸ã®ä»‹å…¥ã™ã‚‹å‘¼å‡ºã—ãŒå­˜åœ¨ã—ãªã„ã‹ãŽã‚Šã€isCancelled()ã€isDone()ã€ãŠã‚ˆã³cancelã®ä»¥é™ã®å‘¼å‡ºã—ã§ã¯trueãŒè¿”ã•れã€join()ãŠã‚ˆã³é–¢é€£ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å‘¼å‡ºã—ã§ã¯CancellationExceptionãŒç™ºç”Ÿã—ã¾ã™ã€‚

      ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã‚µãƒ–クラスã§ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã§ãã¾ã™ãŒã€ãã®å ´åˆã§ã‚‚ã€å¼•ãç¶šãã“れらã®ãƒ—ロパティãŒä¿æŒã•れるよã†ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ 特ã«ã€cancelメソッド自体ãŒä¾‹å¤–をスローã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。

      ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã»ã‹ã®ã‚¿ã‚¹ã‚¯ã‹ã‚‰å‘¼ã³å‡ºã•れるよã†ã«è¨­è¨ˆã•れã¦ã„ã¾ã™ã€‚ ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã‚’終了ã™ã‚‹ã«ã¯ã€ãã®è¨ˆç®—メソッドã‹ã‚‰éžãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’è¿”ã™ã‹ã€ã¾ãŸã¯ã‚¹ãƒ­ãƒ¼ã™ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯completeExceptionally(Throwable)を呼ã³å‡ºã™ã®ã¿ã§æ¸ˆã¿ã¾ã™ã€‚

      定義:
      cancelã€ã‚¤ãƒ³ã‚¿ãƒ•ェースFuture<V>
      パラメータ:
      mayInterruptIfRunning - å–æ¶ˆã—ã®åˆ¶å¾¡ã«å‰²è¾¼ã¿ã¯ä½¿ç”¨ã•れãªã„ãŸã‚ã€ãƒ‡ãƒ•ォルトã®å®Ÿè£…ã§ã¯ã“ã®å€¤ã«åŠ¹æžœã¯ã‚りã¾ã›ã‚“。
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒç¾åœ¨å–り消ã•れã¦ã„ã‚‹å ´åˆã¯true
    • isDone

      public final boolean isDone()
      次ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã‹ã‚‰ã‚³ãƒ”ーã•れãŸèª¬æ˜Ž: Future
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã—ãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚ 完了ã®ç†ç”±ã¯ã€æ­£å¸¸çµ‚了ã€ä¾‹å¤–ã€å–り消ã—ãªã©ãŒã‚りã¾ã™ãŒã€ã„ãšã‚Œã®å ´åˆã‚‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯trueã‚’è¿”ã—ã¾ã™ã€‚
      定義:
      isDoneã€ã‚¤ãƒ³ã‚¿ãƒ•ェースFuture<V>
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã—ãŸå ´åˆã¯true
    • isCancelled

      public final boolean isCancelled()
      次ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã‹ã‚‰ã‚³ãƒ”ーã•れãŸèª¬æ˜Ž: Future
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒæ­£å¸¸ã«å®Œäº†ã™ã‚‹å‰ã«å–り消ã•れãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
      定義:
      isCancelledã€ã‚¤ãƒ³ã‚¿ãƒ•ェースFuture<V>
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã™ã‚‹å‰ã«å–り消ã•れãŸå ´åˆã¯true
    • isCompletedAbnormally

      public final boolean isCompletedAbnormally()
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒä¾‹å¤–をスローã—ãŸã‹å–り消ã•れãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒä¾‹å¤–をスローã—ãŸã‹ã€ã¾ãŸã¯å–り消ã•れãŸå ´åˆã¯true
    • isCompletedNormally

      public final boolean isCompletedNormally()
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒä¾‹å¤–をスローã›ãšã«å®Œäº†ã—ã€å–り消ã•れãªã‹ã£ãŸå ´åˆã¯trueãŒè¿”ã•れã¾ã™ã€‚
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒä¾‹å¤–をスローã›ãšã«å®Œäº†ã—ã€å–り消ã•れãªã‹ã£ãŸå ´åˆã¯true
    • state

      public Future.State state()
      次ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã‹ã‚‰ã‚³ãƒ”ーã•れãŸèª¬æ˜Ž: Future
      計算状態を返ã—ã¾ã™ã€‚
      定義:
      インタフェースFuture<V>内ã®state
      戻り値:
      計算状態
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      19
    • resultNow

      public V resultNow()
      次ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã‹ã‚‰ã‚³ãƒ”ーã•れãŸèª¬æ˜Ž: Future
      計算ã•れãŸçµæžœã‚’å¾…ãŸãšã«è¿”ã—ã¾ã™ã€‚

      ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¿ã‚¹ã‚¯ãŒã™ã§ã«æ­£å¸¸ã«å®Œäº†ã—ã¦ã„ã‚‹ã“ã¨ã‚’コール元ãŒèªè­˜ã™ã‚‹å ´åˆã«ä½¿ç”¨ã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€æˆåŠŸã—ãŸã‚¿ã‚¹ã‚¯ã«ã¤ã„ã¦Futureオブジェクトã®ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‚’フィルタ処ç†ã—ã€ãƒžãƒƒãƒ”ング演算を使用ã—ã¦çµæžœã®ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‚’å–å¾—ã™ã‚‹å ´åˆãªã©ã§ã™ã€‚

          results = futures.stream()
                     .filter(f -> f.state() == Future.State.SUCCESS)
                     .map(Future::resultNow)
                     .toList();
      

      定義:
      インタフェースFuture<V>内ã®resultNow
      戻り値:
      è¨ˆç®—çµæžœ
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      19
    • exceptionNow

      public Throwable exceptionNow()
      次ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã‹ã‚‰ã‚³ãƒ”ーã•れãŸèª¬æ˜Ž: Future
      待機ã›ãšã«ã‚¿ã‚¹ã‚¯ã«ã‚ˆã£ã¦ã‚¹ãƒ­ãƒ¼ã•れãŸä¾‹å¤–ã‚’è¿”ã—ã¾ã™ã€‚

      ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¿ã‚¹ã‚¯ãŒã™ã§ã«ä¾‹å¤–ã§å®Œäº†ã—ã¦ã„ã‚‹ã“ã¨ã‚’コール元ãŒèªè­˜ã—ã¦ã„ã‚‹å ´åˆã«ç™ºç”Ÿã—ã¾ã™ã€‚

      定義:
      インタフェースFuture<V>内ã®exceptionNow
      戻り値:
      タスクã«ã‚ˆã£ã¦ã‚¹ãƒ­ãƒ¼ã•れãŸä¾‹å¤–
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      19
    • getException

      public final Throwable getException()
      基本計算ã«ã‚ˆã£ã¦ã‚¹ãƒ­ãƒ¼ã•れãŸä¾‹å¤–ã‚’è¿”ã—ã¾ã™ã€‚å–り消ã•れãŸå ´åˆã¯CancellationExceptionã€ãªã„å ´åˆã¾ãŸã¯ãƒ¡ã‚½ãƒƒãƒ‰ãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„å ´åˆã¯nullã‚’è¿”ã—ã¾ã™ã€‚
      戻り値:
      例外。ãªã„å ´åˆã¯null
    • completeExceptionally

      public void completeExceptionally(Throwable ex)
      ã“ã®ã‚¿ã‚¹ã‚¯ã‚’強制的ã«å®Ÿè¡Œã—ã€ä¸­æ–­ã¾ãŸã¯å–り消ã—ã•れã¦ã„ãªã„å ´åˆã¯ã€joinãŠã‚ˆã³é–¢é€£ã®æ“作ã®å®Ÿè¡Œæ™‚ã«æŒ‡å®šã•れãŸä¾‹å¤–ãŒã‚¹ãƒ­ãƒ¼ã•れã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã™ã‚‹ã¨ã€éžåŒæœŸã‚¿ã‚¹ã‚¯ã§ä¾‹å¤–を引ãèµ·ã“ã—ãŸã‚Šã€ãã‚Œä»¥å¤–ã®æ–¹æ³•ã§ã¯å®Œäº†ã—ãªã„タスクã®å®Œäº†ã‚’強制ã—ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“れをã»ã‹ã®çжæ³ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯æŽ¨å¥¨ã•れã¦ã„ã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰å¯èƒ½ã§ã™ãŒã€ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ä¿è¨¼ã‚’ç¶­æŒã™ã‚‹ãŸã‚ã«super実装を起動ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
      パラメータ:
      ex - スローã™ã‚‹ä¾‹å¤–。 ã“ã®ä¾‹å¤–ãŒRuntimeExceptionã¾ãŸã¯Errorã§ãªã„å ´åˆã€ã‚¹ãƒ­ãƒ¼ã•れる実際ã®ä¾‹å¤–ã¯ã€åŽŸå› exã‚’å«ã‚€RuntimeExceptionã«ãªã‚Šã¾ã™ã€‚
    • complete

      public void complete(V value)
      ã“ã®ã‚¿ã‚¹ã‚¯ã‚’実行ã—ã€ä¸­æ–­ã¾ãŸã¯å–り消ã—ã•れã¦ã„ãªã„å ´åˆã€joinã®å¾Œç¶šã®å‘¼ã³å‡ºã—ãŠã‚ˆã³é–¢é€£ã®æ“作ã®çµæžœã¨ã—ã¦æŒ‡å®šã•れãŸå€¤ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã™ã‚‹ã¨ã€éžåŒæœŸã‚¿ã‚¹ã‚¯ã«çµæžœã‚’æä¾›ã—ãŸã‚Šã€ãã‚Œä»¥å¤–ã®æ–¹æ³•ã§ã¯æ­£å¸¸ã«å®Œäº†ã—ãªã„タスクã«ä»£ã‚りã®å‡¦ç†æ–¹æ³•ã‚’æä¾›ã—ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“れをã»ã‹ã®çжæ³ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯æŽ¨å¥¨ã•れã¦ã„ã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰å¯èƒ½ã§ã™ãŒã€ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ä¿è¨¼ã‚’ç¶­æŒã™ã‚‹ãŸã‚ã«super実装を起動ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
      パラメータ:
      value - ã“ã®ã‚¿ã‚¹ã‚¯ã®çµæžœå€¤
    • quietlyComplete

      public final void quietlyComplete()
      値を設定ã›ãšã«ã“ã®ã‚¿ã‚¹ã‚¯ã‚’正常ã«å®Œäº†ã—ã¾ã™ã€‚ setRawResult(V)ã«ã‚ˆã£ã¦è¨­å®šã•ã‚ŒãŸæœ€æ–°ã®å€¤(ã¾ãŸã¯ãƒ‡ãƒ•ォルト㮠null)ã¯ã€joinã®å¾Œç¶šã®å‘¼å‡ºã—ãŠã‚ˆã³é–¢é€£ã®æ“作ã®çµæžœã¨ã—ã¦è¿”ã•れã¾ã™ã€‚
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      1.8
    • get

      public final V get() throws InterruptedException, ExecutionException
      å¿…è¦ã«å¿œã˜ã¦è¨ˆç®—ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…機ã—ã€ãã®å¾Œã€è¨ˆç®—çµæžœã‚’å–å¾—ã—ã¾ã™ã€‚
      定義:
      getã€ã‚¤ãƒ³ã‚¿ãƒ•ェースFuture<V>
      戻り値:
      è¨ˆç®—çµæžœ
      スロー:
      CancellationException - 計算ãŒå–り消ã•れãŸå ´åˆ
      ExecutionException - 計算ã§ä¾‹å¤–ãŒã‚¹ãƒ­ãƒ¼ã•れãŸå ´åˆ
      InterruptedException - ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã®ãƒ¡ãƒ³ãƒãƒ¼ã§ãªãã€å¾…機中ã«å‰²è¾¼ã¿ãŒç™ºç”Ÿã—ãŸå ´åˆ
    • get

      public final V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
      å¿…è¦ã«å¿œã˜ã¦ã€æœ€å¤§ã§æŒ‡å®šã•ã‚ŒãŸæ™‚é–“ã€è¨ˆç®—ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…機ã—ã€ãã®å¾Œã€è¨ˆç®—çµæžœãŒåˆ©ç”¨å¯èƒ½ãªå ´åˆã¯çµæžœã‚’å–å¾—ã—ã¾ã™ã€‚
      定義:
      getã€ã‚¤ãƒ³ã‚¿ãƒ•ェースFuture<V>
      パラメータ:
      timeout - 待機ã™ã‚‹æœ€é•·æ™‚é–“
      unit - timeoutå¼•æ•°ã®æ™‚é–“å˜ä½
      戻り値:
      è¨ˆç®—çµæžœ
      スロー:
      CancellationException - 計算ãŒå–り消ã•れãŸå ´åˆ
      ExecutionException - 計算ã§ä¾‹å¤–ãŒã‚¹ãƒ­ãƒ¼ã•れãŸå ´åˆ
      InterruptedException - ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã®ãƒ¡ãƒ³ãƒãƒ¼ã§ãªãã€å¾…機中ã«å‰²è¾¼ã¿ãŒç™ºç”Ÿã—ãŸå ´åˆ
      TimeoutException - 待機ãŒã‚¿ã‚¤ãƒ ãƒ»ã‚¢ã‚¦ãƒˆã«ãªã£ãŸå ´åˆ
    • quietlyJoin

      public final void quietlyJoin()
      ã“ã®ã‚¿ã‚¹ã‚¯ã‚’çµåˆã—ã€ãã®çµæžœã‚’è¿”ã—ãŸã‚Šä¾‹å¤–をスローã—ãŸã‚Šã—ã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ä¸€éƒ¨ã®ã‚¿ã‚¹ã‚¯ãŒå–り消ã•れãŸã‹ã€ã¾ãŸã¯ãれ以外ã§å¼·åˆ¶çš„ã«ä¸­æ­¢ã•れãŸã“ã¨ãŒã‚ã‹ã£ã¦ã„る状態ã§ã€ã‚¿ã‚¹ã‚¯ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’処ç†ã™ã‚‹ã¨ãã«å½¹ç«‹ã¤ã“ã¨ãŒã‚りã¾ã™ã€‚
    • quietlyInvoke

      public final void quietlyInvoke()
      ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚’é–‹å§‹ã—ã€å¿…è¦ãªå ´åˆã¯å®Œäº†ã¾ã§å¾…機ã—ã¾ã™ãŒã€ãã®çµæžœã‚’è¿”ã—ãŸã‚Šä¾‹å¤–をスローã—ãŸã‚Šã—ã¾ã›ã‚“。
    • quietlyJoin

      public final boolean quietlyJoin(long timeout, TimeUnit unit) throws InterruptedException
      ã“ã®ã‚¿ã‚¹ã‚¯ã¸ã®å‚加を試ã¿ã¾ã™ã€‚指定ã•れãŸã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒçµŒéŽã—ã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒä¸­æ–­ã•れã¦ã„ãªã„ã¨ãã«(例外的ã«)ãŒå®Œäº†ã—ãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
      パラメータ:
      timeout - 待機ã™ã‚‹æœ€é•·æ™‚é–“
      unit - timeoutå¼•æ•°ã®æ™‚é–“å˜ä½
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã—ãŸå ´åˆã¯true
      スロー:
      InterruptedException - 待機中ã«ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§å‰²è¾¼ã¿ãŒç™ºç”Ÿã—ãŸå ´åˆ
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      19
    • quietlyJoinUninterruptibly

      public final boolean quietlyJoinUninterruptibly(long timeout, TimeUnit unit)
      ã“ã®ã‚¿ã‚¹ã‚¯ã¸ã®å‚加を試ã¿ã¾ã™ã€‚指定ã•れãŸã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒçµŒéŽã™ã‚‹å‰ã«(例外的ã«)を完了ã—ãŸå ´åˆã¯trueã‚’è¿”ã—ã¾ã™ã€‚
      パラメータ:
      timeout - 待機ã™ã‚‹æœ€é•·æ™‚é–“
      unit - timeoutå¼•æ•°ã®æ™‚é–“å˜ä½
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Œäº†ã—ãŸå ´åˆã¯true
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      19
    • helpQuiesce

      public static void helpQuiesce()
      ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã€Œé™æ­¢ã€ã‚’ホストã™ã‚‹ãƒ—ールã¾ã§ã€ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å¤šæ•°ã®ã‚¿ã‚¹ã‚¯ãŒãƒ•ォークã•れるãŒã€ã©ã®ã‚¿ã‚¹ã‚¯ã‚‚明示的ã«ã¯çµåˆã•れãšã€ä»£ã‚りã«ã™ã¹ã¦ãŒå‡¦ç†ã•れるã¾ã§å®Ÿè¡Œã™ã‚‹è¨­è¨ˆã§å½¹ç«‹ã¤ã“ã¨ãŒã‚りã¾ã™ã€‚
    • reinitialize

      public void reinitialize()
      ã“ã®ã‚¿ã‚¹ã‚¯ã®å†…部登録状態をリセットã—ã€å¾Œç¶šã®forkを許å¯ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã™ã‚‹ã¨ã€ã“ã®ã‚¿ã‚¹ã‚¯ã‚’ç¹°è¿”ã—å†åˆ©ç”¨ã§ãã¾ã™ãŒã€ãれãŒå¯èƒ½ãªã®ã¯ã€ã“ã®ã‚¿ã‚¹ã‚¯ãŒãƒ•ォークã•れã¦ã„ãªã„ã‹ã€ã¾ãŸã¯ãƒ•ォークã•れãŸã‚ã¨ã«å®Œäº†ã—ã€ã‹ã¤ã“ã®ã‚¿ã‚¹ã‚¯ã®æœªå‡¦ç†ã®çµåˆã‚‚ã™ã¹ã¦å®Œäº†ã—ã¦ã„ã‚‹ã¨ãã«å†åˆ©ç”¨ãŒç™ºç”Ÿã—ãŸå ´åˆã ã‘ã§ã™ã€‚ ãã®ä»–ã®ã™ã¹ã¦ã®ä½¿ç”¨æ¡ä»¶ã®ä¸‹ã§ã®åŠ¹æžœã¯ä¿è¨¼ã•れã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ãƒ«ãƒ¼ãƒ—内ã§ã‚µãƒ–タスクã®äº‹å‰ã«æ§‹ç¯‰ã•れãŸãƒ„リーを実行ã™ã‚‹ã¨ãã«å½¹ç«‹ã¤ã“ã¨ãŒã‚りã¾ã™ã€‚

      ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå®Œäº†ã™ã‚‹ã¨ã€isDone()ã¯falseを報告ã—ã€getException()㯠nullを報告ã—ã¾ã™ã€‚ ãŸã ã—ã€getRawResultã«ã‚ˆã£ã¦è¿”ã•れる値ã¯å½±éŸ¿ã‚’å—ã‘ã¾ã›ã‚“。 ã“ã®å€¤ã‚’クリアã™ã‚‹ã«ã¯ã€ setRawResult(null)を呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚

    • getPool

      public static ForkJoinPool getPool()
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’ホストã—ã¦ã„るプールを返ã—ã¾ã™ã€‚ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã®å¤–部ã§å®Ÿè¡Œã•れã¦ã„ã‚‹å ´åˆã¯ã€nullã‚’è¿”ã—ã¾ã™ã€‚

      ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€nullã‚’è¿”ã—ã¾ã™ã€‚inForkJoinPool()ãŒfalseã‚’è¿”ã™å ´åˆã«ã®ã¿nullã‚’è¿”ã—ã¾ã™ã€‚

      戻り値:
      プール。ãªã„å ´åˆã¯null
    • inForkJoinPool

      public static boolean inForkJoinPool()
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒã€ForkJoinPool計算ã¨ã—ã¦å®Ÿè¡Œã•れるForkJoinWorkerThreadã®å ´åˆã€trueã‚’è¿”ã—ã¾ã™ã€‚
      戻り値:
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPool計算ã¨ã—ã¦å®Ÿè¡Œã•れるForkJoinWorkerThreadã§ã‚ã‚‹å ´åˆã¯true。ãれ以外ã®å ´åˆã¯false
    • tryUnfork

      public boolean tryUnfork()
      ã“ã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã‚’試ã¿ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯é€šå¸¸ã€ã“ã®ã‚¿ã‚¹ã‚¯ãŒç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦æœ€å¾Œã«ãƒ•ォークã•れãŸã‚¿ã‚¹ã‚¯ã§ã‚りã€ã‹ã¤åˆ¥ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§ã®å®Ÿè¡Œã‚’é–‹å§‹ã—ã¦ã„ãªã„å ´åˆã«æˆåŠŸã—ã¾ã™(ãŸã ã—ã€ä¿è¨¼ã¯ã•れã¾ã›ã‚“)。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€æ¨ªå–りã•れãŸå¯èƒ½æ€§ãŒã‚ã‚‹ãŒã€æ¨ªå–りã•れã¦ã„ãªã‹ã£ãŸã‚¿ã‚¹ã‚¯ã®ä»£ã‚りã®ãƒ­ãƒ¼ã‚«ãƒ«å‡¦ç†ã‚’調整ã™ã‚‹ã¨ãã«å½¹ç«‹ã¤ã“ã¨ãŒã‚りã¾ã™ã€‚
      戻り値:
      フォーク解除ã•れãŸå ´åˆã¯true
    • getQueuedTaskCount

      public static int getQueuedTaskCount()
      ç¾åœ¨ã®ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ»ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ãƒ•ォークã•れãŸãŒã€ã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„ã‚¿ã‚¹ã‚¯ã®æŽ¨å®šæ•°ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®å€¤ã¯ã€ã»ã‹ã®ã‚¿ã‚¹ã‚¯ã‚’フォークã™ã‚‹ã‹ã©ã†ã‹ã«é–¢ã™ã‚‹ãƒ’ãƒ¥ãƒ¼ãƒªã‚¹ãƒ†ã‚£ãƒƒã‚¯ãªæ±ºå®šã‚’下ã™ãŸã‚ã«å½¹ç«‹ã¤å ´åˆãŒã‚りã¾ã™ã€‚
      戻り値:
      タスク数
    • getSurplusQueuedTaskCount

      public static int getSurplusQueuedTaskCount()
      ç¾åœ¨ã®ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ»ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ä¿æŒã•れã¦ã„るローカルã®ã‚­ãƒ¥ãƒ¼ã«å…¥ã£ã¦ã„るタスクãŒã€ãれを横å–りã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ä»–ã®ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ»ã‚¹ãƒ¬ãƒƒãƒ‰ã‚ˆã‚Šã‚‚ã©ã‚Œã ã‘多ã„ã‹ã®æŽ¨å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚ã“ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ã„ãªã„å ´åˆã¯ã‚¼ãƒ­ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®å€¤ã¯ã€ã»ã‹ã®ã‚¿ã‚¹ã‚¯ã‚’フォークã™ã‚‹ã‹ã©ã†ã‹ã«é–¢ã™ã‚‹ãƒ’ãƒ¥ãƒ¼ãƒªã‚¹ãƒ†ã‚£ãƒƒã‚¯ãªæ±ºå®šã‚’下ã™ãŸã‚ã«å½¹ç«‹ã¤å ´åˆãŒã‚りã¾ã™ã€‚ ForkJoinTaskã®å¤šãã®ä½¿ç”¨æ–¹æ³•ã«ãŠã‘る定常状態ã§ã€å„ワーカーã¯ã€ã‚¿ã‚¹ã‚¯ã®å°ã•ã„余りã®å®šæ•°(ãŸã¨ãˆã°ã€3)ã‚’ç¶­æŒã—ã€ã“ã®ã—ãã„値を超ãˆãŸå ´åˆã¯è¨ˆç®—をローカルã§å‡¦ç†ã—よã†ã¨ã™ã‚‹ã¹ãã§ã™ã€‚
      戻り値:
      タスクã®ä½™ã‚Šã®æ•°ã€‚è² ã®å ´åˆã‚‚ã‚ã‚‹
    • getRawResult

      public abstract V getRawResult()
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒç•°å¸¸ãªçŠ¶æ…‹ã§å®Ÿè¡Œã•れãŸå ´åˆã§ã‚ã£ã¦ã‚‚ã€join()ã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹çµæžœã‚’è¿”ã—ã¾ã™ã€‚ã“ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•れãŸã‹ã©ã†ã‹ãŒä¸æ˜Žã®å ´åˆã¯ã€nullã§ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ãƒ‡ãƒãƒƒã‚°ã‚’支æ´ã—ãŸã‚Šã€æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã™ã€‚ ã“れをã»ã‹ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯æŽ¨å¥¨ã•れã¦ã„ã¾ã›ã‚“。
      戻り値:
      çµæžœã‚ã‚‹ã„ã¯null (完了ã—ãªã„å ´åˆ)
    • setRawResult

      protected abstract void setRawResult(V value)
      指定ã•れãŸå€¤ã‚’çµæžœã¨ã—ã¦è¿”ã™ã“ã¨ã‚’強制ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã‚ã‚‹ãŸã‚ã€ãれ以外ã®ä¸€èˆ¬çš„ãªå ´åˆã§ã¯å‘¼ã³å‡ºã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。
      パラメータ:
      value - 値
    • exec

      protected abstract boolean exec()
      ã“ã®ã‚¿ã‚¹ã‚¯ã®ãƒ™ãƒ¼ã‚¹å‡¦ç†ã‚’ãŸã ã¡ã«å®Ÿè¡Œã—ã€trueã‚’è¿”ã—ã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰æˆ»ã£ãŸå ´åˆã€ã“ã®ã‚¿ã‚¹ã‚¯ã¯å®Œäº†ã—ã¦ã„ã‚‹ã“ã¨ãŒä¿è¨¼ã•れã¾ã™ã€‚ ãれ以外ã®å ´åˆã€ãŸã¨ãˆã°å®Œäº†ãƒ¡ã‚½ãƒƒãƒ‰ã®æ˜Žç¤ºçš„ãªå‘¼å‡ºã—ã‚’å¿…è¦ã¨ã™ã‚‹éžåŒæœŸã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã“ã®ã‚¿ã‚¹ã‚¯ãŒå¿…ãšã—も完了ã—ã¦ã„ãªã„(ã¾ãŸã¯å®Œäº†ã—ã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã£ã¦ã„ãªã„)ã“ã¨ã‚’示ã™falseã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ç•°å¸¸çµ‚了を示ã™(éžãƒã‚§ãƒƒã‚¯)例外をスローã™ã‚‹å ´åˆã‚‚ã‚りã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã‚ã‚‹ãŸã‚ã€ãれ以外ã®ä¸€èˆ¬çš„ãªå ´åˆã§ã¯å‘¼ã³å‡ºã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ãŒæ­£å¸¸ã«å®Œäº†ã—ãŸã“ã¨ãŒã‚ã‹ã£ã¦ã„ã‚‹å ´åˆã¯true
    • peekNextLocalTask

      protected static ForkJoinTask<?> peekNextLocalTask()
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ã‚­ãƒ¥ãƒ¼ã«å…¥ã‚Œã‚‰ã‚ŒãŸãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„タスクãŒã™ãã«ä½¿ç”¨ã§ãã‚‹å ´åˆã€ãã®ã‚¿ã‚¹ã‚¯ã‚’è¿”ã—ã€ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã‚„実行ã¯è¡Œã„ã¾ã›ã‚“。 ã“ã®ã‚¿ã‚¹ã‚¯ãŒæ¬¡ã«å®Ÿéš›ã«ãƒãƒ¼ãƒªãƒ³ã‚°ã¾ãŸã¯å®Ÿè¡Œã•れるã¨ã„ã†ä¿è¨¼ã¯ã‚りã¾ã›ã‚“。 逆ã«ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¿ã‚¹ã‚¯ãŒå­˜åœ¨ã™ã‚‹ãŒã€ã»ã‹ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã¨ç«¶åˆã—ãªã‘れã°ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„å ´åˆã§ã‚‚nullã‚’è¿”ã™ã“ã¨ãŒã‚りã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ä¸»ã«æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã€ã»ã‹ã®ç”¨é€”ã§ä½¿ç”¨ã•れるã“ã¨ã¯ã¾ã‚Œã§ã™ã€‚
      戻り値:
      次ã®ã‚¿ã‚¹ã‚¯ã€‚使用ã§ãã‚‹ã‚‚ã®ãŒãªã„å ´åˆã¯null
    • pollNextLocalTask

      protected static ForkJoinTask<?> pollNextLocalTask()
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ã„ã‚‹å ´åˆã«ã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ã‚­ãƒ¥ãƒ¼ã«å…¥ã‚Œã‚‰ã‚ŒãŸãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„次ã®ã‚¿ã‚¹ã‚¯ã‚’ã€å®Ÿè¡Œã›ãšã«ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã—ã¦å¾©å¸°ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ä¸»ã«æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã€ã»ã‹ã®ç”¨é€”ã§ä½¿ç”¨ã•れるã“ã¨ã¯ã¾ã‚Œã§ã™ã€‚
      戻り値:
      次ã®ã‚¿ã‚¹ã‚¯ã€‚使用ã§ãã‚‹ã‚‚ã®ãŒãªã„å ´åˆã¯null
    • pollTask

      protected static ForkJoinTask<?> pollTask()
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ãŠã‚Šã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ã‚­ãƒ¥ãƒ¼ã«å…¥ã‚Œã‚‰ã‚ŒãŸãŒã¾ã å®Ÿè¡Œã•れã¦ã„ãªã„次ã®ã‚¿ã‚¹ã‚¯ãŒä½¿ç”¨å¯èƒ½ãªå ´åˆã€ãã®ã‚¿ã‚¹ã‚¯ã‚’実行ã›ãšã«ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è§£é™¤ã—ã¦å¾©å¸°ã—ã¾ã™ã€‚ãã®ã‚ˆã†ãªã‚¿ã‚¹ã‚¯ãŒä½¿ç”¨å¯èƒ½ã§ãªã„å ´åˆã¯ã€ä»–ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚ˆã£ã¦ãƒ•ォークã•れãŸã‚¿ã‚¹ã‚¯ãŒå¯¾è±¡ã«ãªã‚Šã¾ã™(使用å¯èƒ½ãªå ´åˆ)。 å¯ç”¨æ€§ã¯ä¸€æ™‚çš„ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€nullã®çµæžœã¯ã€å¿…ãšã—ã‚‚ã“ã®ã‚¿ã‚¹ã‚¯ãŒå‹•作ã—ã¦ã„るプールã®ä¼‘止を示ã™ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ä¸»ã«æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã€ã»ã‹ã®ç”¨é€”ã§ä½¿ç”¨ã•れるã“ã¨ã¯ã¾ã‚Œã§ã™ã€‚
      戻り値:
      タスク。使用ã§ãã‚‹ã‚‚ã®ãŒãªã„å ´åˆã¯null
    • pollSubmission

      protected static ForkJoinTask<?> pollSubmission()
      ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ãŒForkJoinPoolã§å‹•作ã—ã¦ã„ã‚‹å ´åˆã€ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’解除ã—ã€å®Ÿè¡Œã›ãšã«ã€ãƒ—ールã«å¤–部ã«é€ä¿¡ã•れãŸã‚¿ã‚¹ã‚¯(使用å¯èƒ½ãªå ´åˆ)ã‚’è¿”ã—ã¾ã™ã€‚ å¯ç”¨æ€§ã¯ä¸€æ™‚çš„ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€nullã®çµæžœã¯å¿…ãšã—もプールã®é™æ­¢ã‚’æ„味ã™ã‚‹ã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ä¸»ã«æ‹¡å¼µæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã€ã»ã‹ã®ç”¨é€”ã§ä½¿ç”¨ã•れるã“ã¨ã¯ã¾ã‚Œã§ã™ã€‚
      戻り値:
      タスク。使用ã§ãã‚‹ã‚‚ã®ãŒãªã„å ´åˆã¯null
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      9
    • getForkJoinTaskTag

      public final short getForkJoinTaskTag()
      ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°ã‚’è¿”ã—ã¾ã™ã€‚
      戻り値:
      ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      1.8
    • setForkJoinTaskTag

      public final short setForkJoinTaskTag(short newValue)
      ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°å€¤ã‚’原å­çš„ã«è¨­å®šã—ã€å¤ã„値を返ã—ã¾ã™ã€‚
      パラメータ:
      newValue - æ–°ã—ã„タグ値
      戻り値:
      å‰ã®ã‚¿ã‚°å€¤
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      1.8
    • compareAndSetForkJoinTaskTag

      public final boolean compareAndSetForkJoinTaskTag(short expect, short update)
      ã“ã®ã‚¿ã‚¹ã‚¯ã®ã‚¿ã‚°å€¤ã‚’原å­çš„ã«æ¡ä»¶ä»˜ãã§è¨­å®šã—ã¾ã™ã€‚ ã‚¿ã‚°ã¯ã€æ§˜ã€…ãªã‚¢ãƒ—リケーションã®ä¸­ã§ã‚‚特ã«ã€ã‚°ãƒ©ãƒ•ã‚’æ“作ã™ã‚‹ã‚¿ã‚¹ã‚¯ã§ã®ãƒã‚§ãƒƒã‚¯ãƒ»ãƒžãƒ¼ã‚«ãƒ¼ã¨ã—ã¦ä½¿ç”¨ã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€å‡¦ç†å‰ã« if (task.compareAndSetForkJoinTaskTag((short)0, (short)1))を確èªã—ã€falseã®å ´åˆã¯ãƒŽãƒ¼ãƒ‰ãŒã™ã§ã«ãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã®ã§çµ‚了ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãªã©ã§ã™ã€‚
      パラメータ:
      expect - 予想ã•れるタグ値
      update - æ–°ã—ã„タグ値
      戻り値:
      æˆåŠŸã—ãŸå ´åˆã¯true。ã¤ã¾ã‚Šã€ç¾åœ¨ã®å€¤ãŒexpectã«ç­‰ã—ãã€updateã«å¤‰æ›´ã•れã¾ã—ãŸã€‚
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      1.8
    • adapt

      public static ForkJoinTask<?> adapt(Runnable runnable)
      指定ã•れãŸRunnableã®runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()実行時ã«nullã®çµæžœã‚’è¿”ã—ã¾ã™ã€‚
      パラメータ:
      runnable - 実行å¯èƒ½ã‚¢ã‚¯ã‚·ãƒ§ãƒ³
      戻り値:
      タスク
    • adapt

      public static <T> ForkJoinTask<T> adapt(Runnable runnable, T result)
      指定ã•れãŸRunnableã®runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()å®Ÿè¡Œæ™‚ã«æŒ‡å®šã•れãŸçµæžœã‚’è¿”ã—ã¾ã™ã€‚
      型パラメータ:
      T - çµæžœã®ã‚¿ã‚¤ãƒ—
      パラメータ:
      runnable - 実行å¯èƒ½ã‚¢ã‚¯ã‚·ãƒ§ãƒ³
      result - 完了時ã®çµæžœ
      戻り値:
      タスク
    • adapt

      public static <T> ForkJoinTask<T> adapt(Callable<? extends T> callable)
      指定ã•れãŸCallableã®callメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€ãã®çµæžœã‚’join()実行時ã«è¿”ã—ã€ç™ºç”Ÿã—ãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚
      型パラメータ:
      T - コールå¯èƒ½çµæžœã®ã‚¿ã‚¤ãƒ—
      パラメータ:
      callable - 呼出ã—å¯èƒ½ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³
      戻り値:
      タスク
    • adaptInterruptible

      public static <T> ForkJoinTask<T> adaptInterruptible(Callable<? extends T> callable)
      指定ã•れãŸCallableã®callメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€ãã®çµæžœã‚’join()実行時ã«è¿”ã—ã€ç™ºç”Ÿã—ãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚ ã¾ãŸã€mayInterruptIfRunning trueを指定ã—ã¦cancelã‚’èµ·å‹•ã™ã‚‹ã¨ã€ã‚¿ã‚¹ã‚¯ã‚’実行ã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ãŒä¸­æ–­ã•れã¾ã™ã€‚
      型パラメータ:
      T - コールå¯èƒ½çµæžœã®ã‚¿ã‚¤ãƒ—
      パラメータ:
      callable - 呼出ã—å¯èƒ½ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³
      戻り値:
      タスク
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      19
    • adaptInterruptible

      public static <T> ForkJoinTask<T> adaptInterruptible(Runnable runnable, T result)
      指定ã•れãŸRunnableã®runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()ã§æŒ‡å®šã—ãŸçµæžœã‚’è¿”ã—ã€æ¤œå‡ºã•れãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚ ã¾ãŸã€mayInterruptIfRunning trueを指定ã—ã¦cancelã‚’èµ·å‹•ã™ã‚‹ã¨ã€ã‚¿ã‚¹ã‚¯ã‚’実行ã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ãŒä¸­æ–­ã•れã¾ã™ã€‚
      型パラメータ:
      T - çµæžœã®ã‚¿ã‚¤ãƒ—
      パラメータ:
      runnable - 実行å¯èƒ½ã‚¢ã‚¯ã‚·ãƒ§ãƒ³
      result - 完了時ã®çµæžœ
      戻り値:
      タスク
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      22
    • adaptInterruptible

      public static ForkJoinTask<?> adaptInterruptible(Runnable runnable)
      指定ã•れãŸRunnableã® runメソッドをアクションã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ–°ã—ã„ForkJoinTaskã‚’è¿”ã—ã€join()ã§nullã‚’è¿”ã—ã€æ¤œå‡ºã•れãŸãƒã‚§ãƒƒã‚¯ä¾‹å¤–ã‚’RuntimeExceptionã«å¤‰æ›ã—ã¾ã™ã€‚ ã¾ãŸã€ mayInterruptIfRunning trueを指定ã—ã¦cancelã‚’èµ·å‹•ã™ã‚‹ã¨ã€ã‚¿ã‚¹ã‚¯ã‚’実行ã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ãŒä¸­æ–­ã•れã¾ã™ã€‚
      パラメータ:
      runnable - 実行å¯èƒ½ã‚¢ã‚¯ã‚·ãƒ§ãƒ³
      戻り値:
      タスク
      å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      22