1

以下は、キュー内のランナブルを管理するための最初の推測です。彼らは一人ずつ処刑されます。この時点での質問は 1 つだけです。

  1. リストの 2 番目のスレッドの実行を開始しないように、前のスレッドがまだ実行されているかどうかを定期的に確認するにはどうすればよいですか?

    Queue<Object> qe=new LinkedList<Object>();
    
    for (int i = 0; i < 5; i++) {
    
        RunnableObject ro = new RunnableObject();
    
        qe.add(ro);
    }
    
    for (int i = 0; i < qe.size(); i++) {
    
        qe.peek().start;
        qe.poll();
    
    }
    
4

1 に答える 1

3

これを行うように設計された ExecutorService を使用します。2004 年に Java 5.0 で追加され、キューとスレッド プールが含まれています。

ExecutorService es = Executors.newSingleThreadExecutor();

es.sumbit(new RunnableObject()); // submit Runnable not Threads.

これにより、同じスレッドが再利用され、オーバーヘッドが削減され、設定した数 (この場合は 1) よりも多くのスレッドを使用しないようになりますが、固定サイズのスレッド プールの場合は 5 と言えます。

High Level Concurrency Objectsのチュートリアルを読むことをお勧めします。

于 2013-09-13T08:34:02.430 に答える