0

最初のケース: 何らかの結果を返す多くのタスクがあるとしましょう。ここでは、それを「結果」と呼びましょう。これらはすべて、配列リストに格納する必要があります。次の 2 つのオプションがあります。

1) main メソッドで 1 つの arraylist を作成し、共有リストにアクセスできる runnables と同期された add メソッドを使用します。

2) main メソッドで 1 つの arraylist を作成し、callable を使用してタスクを実行し、結果を返し、main メソッドが Result をそのリストに追加できるようにします。

runnable には同期アクセスが必要ですが、callable には必要ないため、2 つの間にパフォーマンスの違いはありますか?

次に、2 番目のケース: 各タスクが「小さな」配列リストを生成するとします。たとえば、タスクごとに 10 項目未満とします。これも 2 つのオプションを提供します。

1) 生成されるたびに結果項目を追加する共有リストにアクセスできる、メインおよび実行可能ファイル内の 1 つの配列リスト。

2) main と callables> に 1 つの arrayList があり、タスクが完了するまで結果を格納する独自のローカル arraylist を持ち、main で addAll を使用して見つかった結果を追加します。

前と同じ質問ですが、パフォーマンスの違いは何ですか?

明確にするために、速度(いくつかの同期の問題など)とメモリの両方の観点からのパフォーマンス(ローカルの小さな配列リストのために呼び出し可能オブジェクトはより多くのメモリを使用しますか、それともこれは小さいから無視できますか)?

4

1 に答える 1