-2

スレッドを順番に実行する方法は? (たとえば、3 つのスレッド T1、T2、T3 があり、これらのスレッドを同時に開始したいが、最初の T1、次に T2、最後に T3 のように順番に実行する必要があることを確認します。)

    Thread t1= new Thread(new Runnable()
      {
        void run()
          {System.out.println("inside Thread1");}
      });


    Thread t2= new Thread(new Runnable()
      {
        void run()
          {System.out.println("inside Thread2");}
      });

    Thread t3= new Thread(new Runnable()
      {
        void run()
          {System.out.println("inside Thread3");}
      });

     t1.start();
     t2.strat();
     t3.start();

出力:
Thread1
内部 Thread2 内部 Thread3
内部
u を実行するたびに、o/p は上記のようになります。

4

5 に答える 5

6

私の謙虚な意見では、おそらくスレッドは必要なく、コード内で T1()、T2()、T3() メソッドを順番に呼び出すだけですか? スレッドは、複数のタスクを並行して実行するために使用されます。

于 2013-08-05T11:22:42.267 に答える
1

BlockingQueues を使用してスレッドを同期する

    final BlockingQueue q1 = new SynchronousQueue();
    final BlockingQueue q2 = new SynchronousQueue();
    Thread t1 = new Thread() {
        public void run() {
            ... 
            try {
                q1.put(new Object());
            } catch (InterruptedException e) {
            }
        };
    };
    Thread t2 = new Thread() {
        public void run() {
            try {
                q1.take();
                ...
                q2.put(new Object());
            } catch (InterruptedException e) {
            }
        }
    };
    Thread t3 = new Thread() {
        public void run() {
            try {
                q2.take();
                ...
            } catch (InterruptedException e) {
            }
        }
    };
    t1.start();
    t2.start();
    t3.start();
于 2013-08-05T11:37:26.487 に答える
1

flag/sを介してこれらのスレッドを同期できます 。BlockingQueueのような Java によって提供される組み込みのシンクロナイザーを使用することもできます。

于 2013-08-05T11:23:06.097 に答える