0

以下のJavaコードを開発しました..

   class ThreadB extends Thread {
public  int totals;

 public void run() {
     synchronized(this) {
     for(int i=0;i<100;i++) {
      totals += i;
      }
      notify(); //want to notify only thread b2
      }
      }
     }

そして他のクラスは…

        class ThreadA {
     public static void main(String [] args) {
     ThreadB b1 = new ThreadB();
     b.start();
ThreadB b2 = new ThreadB();
b2.start();
ThreadB b3 = new ThreadB();
b3.start();
ThreadB b4 = new ThreadB();
b4.start();

     synchronized(b) {
     try {
     System.out.println("Waiting for b to complete...");
     b1.wait();
b2.wait(); //only b2 to be notified
b3.wait();
b4.wait();
    } catch (InterruptedException e) {}
    System.out.println("Total is: " + b.totals);
     }
    }
    }

いいえ、スレッド b2 と b2 のみに通知したいことを教えてください。通知スレッドは任意の 1 つのスレッドを取得できるため、これを達成する方法はありますが、b2 のみが必要です。アドバイスしてください。

4

1 に答える 1

0

b2通知を行いたいスレッドを実行するクラスに参照待機を渡すことができます。

あなたsynchronizedがwait()しているオブジェクトをしなければなりません。

于 2012-04-19T18:15:26.087 に答える