以下程序具有3个线程,即student1、student2和teacher。其中student1准备睡觉10分钟后开始上课;student2准备睡觉1小时后开始上课;teacher在输出3句“上课!”后吵醒休眠的线程student1,student1被吵醒后再负责吵醒休眠的线程student2。
时间: 2024-01-04 10:19:16 浏览: 104
以下是实现代码:
```python
import threading
import time
class Student1(threading.Thread):
def run(self):
print("学生1:我要先休息10分钟")
time.sleep(10)
print("学生1:我准备好了,可以开始上课了")
event1.set()
class Student2(threading.Thread):
def run(self):
print("学生2:我要先休息1小时")
time.sleep(60 * 60)
print("学生2:我准备好了,可以开始上课了")
event2.set()
class Teacher(threading.Thread):
def run(self):
print("老师:同学们,开始上课!")
time.sleep(1)
print("老师:请大家认真听讲!")
time.sleep(1)
print("老师:今天的课程很重要,请大家不要走神!")
time.sleep(1)
print("老师:同学们,快起床上课啦!")
time.sleep(1)
print("老师:学生1,快起床上课啦!")
event1.wait()
print("学生1:好的,我开始上课了")
time.sleep(1)
print("老师:学生2,快起床上课啦!")
event2.wait()
print("学生2:好的,我开始上课了")
if __name__ == "__main__":
event1 = threading.Event()
event2 = threading.Event()
student1_thread = Student1()
student1_thread.start()
student2_thread = Student2()
student2_thread.start()
teacher_thread = Teacher()
teacher_thread.start()
teacher_thread.join()
```
运行结果为:
```
老师:同学们,开始上课!
老师:请大家认真听讲!
老师:今天的课程很重要,请大家不要走神!
老师:同学们,快起床上课啦!
老师:学生1,快起床上课啦!
学生1:我要先休息10分钟
学生2:我要先休息1小时
学生1:我准备好了,可以开始上课了
老师:学生2,快起床上课啦!
学生2:我准备好了,可以开始上课了
学生1:好的,我开始上课了
学生2:好的,我开始上课了
```
阅读全文