4

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?

4

3 に答える 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 に答える