2017-01-28 3 views
0

エグゼキュータのサービス方法は次の通りですキュータサービスの実行可能インスタンスの提出の呼び出しから取得した未来のオブジェクトでgetを使用するためのユースケースがあります)。だから、将来のオブジェクトでgetを呼び出すと、Runnableタスクがサブミットされたためにnullが返されます。

ExecutorService service = null; 
    try { 
    service = Executors.newSingleThreadExecutor(); 
    Future<?> result = service.submit(() -> System.out.println("My 1st ThreadId : " + Thread.currentThread().getId())); 
    System.out.println(result.get()); 
    } finally { 
    if(service != null) service.shutdown(); 
    } 

のRunnableタスクが終わっていない場合にはnullを返す前にそれはおそらくブロッキング呼び出しだろう

My 1st ThreadId : 10 
null 

を与えます。 runnableタスクのためにsubmit to executorサービスを呼び出すことによって返される将来のオブジェクトでgetを使用する実用的な使用法があるかどうかを知る。

答えて

2

最大の使用例は、タスクが完了するのを待っているだけです。通常、いくつかのことを並行してキックし、それらのすべてが終了するのを待つ場合に実行されます。

0

Runnableが例外なく実行されることを確認したい場合は、Future.get()を呼び出してください。ただし、例外が発生した場合は、get()も(別の)例外をスローします。