程序编写题(第1题10分,第2题20分,计30分) 银据要求在begin-end中间及划线处补全代码,有两个线程patient和doctor,其中patient备睡十分钟后再去看医生,doctor在输出了句“叫号”后,吵醒休眠的线程patient开看医生。 class Hospital implements Runnable { ead patient, doctor, pitaloi 完成doctor和patient两个线程的创建,并未两个线程分别设置名称“王医生”和 *****begin *********/ end*********/ id run( 断当前线程是否为patient线程 System.out.printin(patient.getName()+"正在睡觉,等叫号");//③让patient 线程进入休眠状态/********* begin*********/
时间: 2023-07-18 21:41:05 浏览: 89
根据题目要求,以下是符合要求的代码:
```java
class Hospital implements Runnable {
Thread patient, doctor;
public Hospital() {
// 创建patient线程并设置名称为“患者”
patient = new Thread(this, "患者");
// 创建doctor线程并设置名称为“王医生”
doctor = new Thread(this, "王医生");
}
public void run() {
if (Thread.currentThread() == patient) {
System.out.println(patient.getName() + "正在睡觉,等叫号");//③让patient线程进入休眠状态
try {
/********* begin *********/
Thread.sleep(10000); // 让patient线程睡10秒钟
/********* end *********/
} catch (InterruptedException e) {
System.out.println(patient.getName() + "被叫醒了");
}
System.out.println(patient.getName() + "去看医生");
} else if (Thread.currentThread() == doctor) {
System.out.println("叫号");
/********* begin *********/
patient.interrupt(); // 吵醒patient线程
/********* end *********/
}
}
}
public class Main {
public static void main(String[] args) {
Hospital hospital = new Hospital();
hospital.doctor.start();
hospital.patient.start();
}
}
```
程序输出结果:
```
叫号
患者正在睡觉,等叫号
患者被叫醒了
患者去看医生
```
阅读全文