実装手順:
呼び出し可能インターフェースの実装クラスを作成し、実行、および戻り値のスレッドとして()メソッドの呼び出し、呼び出し()メソッドを実装します。
呼び出し可能な値を返す()メソッドの呼び出しのFutureTask呼び出し可能オブジェクトをカプセル化するオブジェクト呼び出し可能FutureTaskクラスオブジェクトを、包装用いて、実装クラスのインスタンスを作成します。
作成し、新しいスレッドを開始するために、ターゲットオブジェクトとしてFutureTaskスレッドオブジェクトを使用します。
スレッドを開始するために呼び出すトレッドオブジェクトstart()メソッド、サブスレッドの実行が終了した後、戻り値を取得するFutureTaskオブジェクトのget()メソッドを呼び出します。
例:
パブリッククラスCallableThreadTestが呼び出し可能に<整数> {実装
@Override
パブリック整数コール()が例外をスロー
{
int型i = 0;
用(; iは100 <; iは++)
{
System.out.printlnは(にThread.currentThread()のgetName()+」「+ I)。
}
Iを返します。
}
公共の静的な無効メイン(文字列[]引数)がExecutionException、例外:InterruptedExceptionをスロー{
FutureTask <整数> FT =新しいFutureTask <>(新しいCallableThreadTest(http://www.amjmh.com/v/))。
以下のために(INT i = 0; iは<100; I ++)
{
System.out.printlnは(にThread.currentThread()のgetName()+ "的循环变量iは值的" + I。);
IF(I == 20)
{
新しいスレッド(FT).start();
}
}
System.out.println( "子スレッド戻り値:" + ft.get());
}
}