안녕하세요 여러분, 내 문제입니다. 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();
}
}
}
안녕하세요 - 코드로 무엇을 달성하려고하는지 더 자세히 설명해 주시겠습니까? – robjohncox
"Home1"과 "Home2"라는 중복 클래스가있는 이유를 모르겠습니다. 그리고 정확히 무엇을 성취하려고합니까? – Multithreader
그냥 스레드로 놀고 여기에 모든 잠금을 해제하고 프로그램의 실행을 완료하려고합니다. 여기서 실행이 완료되지 않습니다. –