タスクの完了後にJavaが複数回呼び出された場合、JavaのFuture.get()
はどのように動作しますか?同じ結果が返されますか?または、計算が失敗した場合、同じ例外を除いてExecutionException
を何度もスローしますか?私はそれについてのドキュメントで何も見つけることができません!
Future
でget()
を何度でも呼び出すことができ、結果を生成するタスクがまだ終了していない場合にのみブロックされます。
タスクがすでに終了している場合は、タスクの結果がすぐに返されます。
タスクが例外で失敗した場合、get()
を呼び出すと、呼び出すたびにExecutionException
がスローされます。
私はそれについてのドキュメントで何も見つけることができません!
あなたはそれらを読んだことがありますか?私がそれらを読んだときに私は答えを得たので、ここにそれがあります..。
V get() throws InterruptedException, ExecutionException
必要に応じて計算が完了するのを待ってから取得しますその結果。
Returns: the computed result Throws: CancellationException - if the computation was cancelled ExecutionException - if the computation threw an exception InterruptedException - if the current thread was interrupted while waiting
計算が完了していない場合は待機し、すでに完了している場合は、何度呼び出しても結果をできるだけ早く返します。