3

私の問題を説明します:

  • 非同期モードでドキュメント生成 (Office ドキュメント) 用のアプリケーションを開発しているので、スレッドを使用します

  • パフォーマンスの制約により、同時に 2 つのスレッドのみを起動する必要があります。

  • 2 つのスレッドの実行中にユーザーがドキュメント生成を開始するのをブロックしないようにするために、スレッド スタックとして ArrayDeque オブジェクトを含むメイン スレッドを開発することを考えました。ユーザーは作成要求を (Colable または Runnable インターフェイスを実装するオブジェクトとして) 追加し、Concurrent API を使用してFIFO モードでスレッドを起動する

    質問は次のとおりです。

  • すべてのユーザーに対してメインスレッドをシングルトンとして実行するにはどうすればよいですか?

  • メインの実行中のスレッドで ArrayDeque を呼び出すにはどうすればよいですか

4

1 に答える 1

9

ExecutorService2 つのスレッドのプールでを使用する単純なケースのように思えます。

class Task implements Runnable {
    ...
}

ExecutorService exec = Executors.newFixedThreadPool(2);
exec.submit(new Task()); // submit task to the queue for asynchronous processing

ExecutorService、スレッドのプールとワーク キューをカプセル化します。スレッドは、前のタスクを完了すると、自動的に新しい作業を開始します。

于 2013-01-08T14:06:27.600 に答える