Я не знаю, что делать! Я новичок, public void checkUp(){}
работал нормально, но внутри метод notifyAll()
не будет уведомлять об wait()
.почему wait() не работает после вызова notifyAll()
public class Doctor extends Thread {
public static void main(String[] args) {
Doctor doctor = new Doctor();
Patient patient1 = new Patient(doctor);
Patient patient2 = new Patient(doctor);
patient1.setName("Patient One");
patient2.setName("Patient Two");
patient1.start();
patient2.start();
}
}
// Это класс пациента
class Patient extends Thread {
Doctor d;
static boolean isAlready = false;
public Patient(Doctor d) {
this.d = d;
}
public void run() {
synchronized(this) {
if (isAlready == false) {
isAlready = true;
try {
System.out.println(Thread.currentThread().getName() + " Wait to see Doctor\n");
wait();
checkup();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
checkup();
}
}
public void checkup() {
synchronized(this) {
try {
System.out.println(Thread.currentThread().getName() + " Enter Doctor's Room!\n");
System.out.println("After Consulting Doctor! '" + Thread.currentThread().getName() + "' Paid fees to Doctor\n");
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + " Notify to next Patient to enter Doctor's Room!\n");
notifyAll();
System.out.println(Thread.currentThread().getName() + " Leaves Hospital\n");
} catch (Exception e) {
}
isAlready = false;
}
}
}
привет, приветствую, вы должны попытаться дать как можно больше информации, как возможно – epoch
Когда вызывается метод 'checkup' (кроме метода' run')? – ortis
Все ваши пациенты ждут, пока другой пациент не назовет «notifyAll» ... Таким образом, никто из пациентов не звонит notifyAll, никогда (потому что все пациенты ждут) ... XD – inigoD