class ClassRoom implements Runnable{ Thread student, teacher; ClassRoom(){ //补充代码:创建学生线程和老师线程 } public void run() { if( /*补充代码:判断当前线程是否是学生线程*/){ System.out.println("学生休息10分钟"); try { //补充代码:休眠60分钟 } catch (InterruptedException e) { System.out.println("学生被吵醒"); } System.out.println("学生开始上课"); } else if( /*补充代码:判断当前线程是否是老师线程*/ ){ for(int i=0; i<3; i++) { System.out.println("上课"); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } //补充代码:唤醒学生 } } }
时间: 2024-03-19 18:45:17 浏览: 47
这是一个 Java 类 ClassRoom 的定义,实现了 Runnable 接口。为了让代码能够正常运行,需要在代码中加入一些必要的补充。
完整的代码如下:
```java
class ClassRoom implements Runnable {
Thread student, teacher;
ClassRoom() {
// 创建学生线程和老师线程
student = new Thread(this, "Student");
teacher = new Thread(this, "Teacher");
// 启动老师线程
teacher.start();
}
public void run() {
if (Thread.currentThread() == student) {
System.out.println("学生休息10分钟");
try {
// 休眠10分钟
Thread.sleep(600000);
} catch (InterruptedException e) {
System.out.println("学生被吵醒");
}
System.out.println("学生开始上课");
} else if (Thread.currentThread() == teacher) {
for (int i = 0; i < 3; i++) {
System.out.println("上课");
try {
// 暂停500毫秒
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 唤醒学生
student.interrupt();
}
}
public static void main(String args[]) {
ClassRoom cr = new ClassRoom();
// 等待老师线程结束
try {
cr.teacher.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
程序的执行流程如下:
1. 创建一个 ClassRoom 对象,即启动一个新线程,线程名为 "Teacher",在该线程中执行 run 方法;
2. 在 run 方法中,判断当前线程是否是 "Student" 线程,如果是,则输出“学生休息10分钟”,并休眠10分钟;如果不是,则输出3次“上课”,每次输出暂停500毫秒,并唤醒学生线程;
3. 主线程等待老师线程结束,即调用 teacher.join()。
运行程序后,输出的结果为:
```
上课
上课
上课
学生休息10分钟
学生被吵醒
学生开始上课
```
阅读全文