My understanding is that callable was added in 1.5 and the runnable interface was kept as-is to prevent the world from ending. Why can't I instantiate a ThreadPoolExecutor
(core, max, tu, unit, new BlockingQueue<Callable>())
- why does the queue necessarily take runnable only? Internally, if i were to submit, invokeAll, invokeAny callables, this should be fine right? Also, would shutDownNow()
return a list of callables?
質問する
3250 次
3 に答える
1
型消去のため、BlockingQueue<Callable<T>>
との両方を取ることはできません。BlockingQueue<Runnable>
どちらのオーバーロードも同じ raw type を持つBlockingQueue
ため、競合します。
Callable
ただし、executor に送信された s のリストをどうするかはわかりません。彼らの結果をどうしますか?それはどこに行くでしょうか?
が欲しいようですねFuture<T>
。Callable<T>
を使用して のコレクションを送信できます。利用可能になったら値を取得できる のinvokeAll
コレクションが返されます。Future<T>
于 2013-08-09T18:53:06.687 に答える