这是我的问题
一家健康中心雇佣了两名医生,每天最多检查和治疗 25 名患者。两名医生中的任何一名医生都会对患者进行检查和治疗。每个病人都必须登记自己的名字,以便医生按照先到先得的原则检查和治疗病人。
练习2 Part a:针对上面提到的场景2,开发一个程序,创建病人和医生(都是线程)。患者排队登记,医生在先到先得的基地从同一队列中挑选患者并检查和治疗他们。使用非线程安全的队列(例如 ArrayDeque)。确保您的程序没有同步问题。
B 部分:使用线程安全的队列(例如 ArrayBlockedQueue)并检查您的解决方案是否存在同步问题。(确保您的解决方案不提供同步方法或同步块)
这是我的代码
package lab8;
import java.util.ArrayDeque;
public class LAB8 {
class Doctor implements Runnable {
private String name;
private Patient patient;
Doctor (String n){
name = n;
}
public void examine (){
System.out.println("Doctor is now examining the patient");
}
public void treat(){
System.out.println("Doctor is now treating the patient");
}
@Override
public void run (){
}
}
static class Patient implements Runnable {
private String name;
Patient (String n){
name = n;
}
public void register(String name){
System.out.println(name + " is registering in Queue");
}
@Override
public void run(){
ArrayDeque<Patient> Patients = new ArrayDeque(25);
for(int i = 0;i<25;i++){
Patients.add(new Patient("Patient No " + i));
Patients.removeFirst().register("Patient No " + i);
}
}
}
public static void main(String[] args) {
ArrayDeque<Patient> Patients = new ArrayDeque(25);
for(int i = 0;i<25;i++){
(new Thread (Patients.removeFirst())).start();
}
}
}
这是我运行它时遇到的错误。
在 lab8.LAB8.main(LAB8.java:50) Java 结果中 java.util.ArrayDeque.removeFirst(ArrayDeque.java:278) 的线程“main”java.util.NoSuchElementException 中的异常结果:1
我现在只在尝试 A 部分。