1

こんにちは皆さん、これは私のコードです。直面している問題は、 を呼び出しているにもかかわらずnotifyAll、ロックを解放していないということです。理由を述べて解決策を教えてください。スレッドは初めてです。前もって感謝します。

class Lock1 {}

class Home1 implements Runnable {
private static int i = 0;

private Lock1 object;
private Thread th;

public Home1(Lock1 ob, String t) {

    object = ob;
    th = new Thread(this);
    th.start();
}

public void run() {
    synchronized (object) {

        while (i != 10) {
            ++i;
            System.out.println(i);
        }
        try {
            // System.out.println("here");
            object.wait();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
        System.out.println("here thread 1");
    }
}
 }

class Home2 implements Runnable {
private static int i = 0;

private Lock1 object;
Thread th;

public Home2(Lock1 ob, String t) {

    object = ob;
    th = new Thread(this);
    th.start();
}

public void run() {
    synchronized (object) {

        while (i != 10) {
            ++i;
            System.out.println(i);
        }
        try {
            // System.out.println("here");
            object.wait();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
        System.out.println("here thread 2");

    }
}

  }

public class Locking {

public static void main(String arg[]) {
    Lock1 ob = new Lock1();

    new Home1(ob, "thread 1");
    new Home2(ob, "thread 2");
    synchronized (ob) {
        ob.notifyAll();
    }
}

}
4

1 に答える 1