设计程序模拟上课情景,要求有3个线程,即student1、student2和teacher。其中student1准 备睡觉10分钟后开始上课;其中student2也准备睡觉10分钟后开始上课;teacher在说了一句 “上课!”后吵醒休眠的线程student1,又说了一句“上课!”后吵醒休眠的线程student2。
时间: 2024-01-04 22:09:29 浏览: 64
好的,以下是一个用Python threading库实现的程序模拟上课情景的示例:
```python
import threading
import time
class Student(threading.Thread):
def __init__(self, name, sleep_time):
threading.Thread.__init__(self)
self.name = name
self.sleep_time = sleep_time
def run(self):
print("{} is sleeping...".format(self.name))
time.sleep(self.sleep_time)
print("{} is awake and ready for class!".format(self.name))
class Teacher(threading.Thread):
def __init__(self, sleep_time):
threading.Thread.__init__(self)
self.sleep_time = sleep_time
def run(self):
print("Teacher: It's time for class!")
time.sleep(self.sleep_time)
print("Teacher: It's time for class again!")
event.set()
if __name__ == "__main__":
# 创建事件对象
event = threading.Event()
# 创建两个学生线程
student1 = Student("Student1", 10)
student2 = Student("Student2", 10)
# 创建老师线程
teacher = Teacher(5)
# 启动线程
student1.start()
student2.start()
teacher.start()
# 等待老师线程唤醒学生线程
event.wait()
# 等待学生线程结束
student1.join()
student2.join()
print("All students are ready for class!")
```
这段代码实现了三个线程,其中两个线程代表两个学生,一个线程代表老师。学生线程在启动后会先休眠一段时间,等待老师线程唤醒它们。而老师线程会在启动后先休眠一段时间,然后通过事件对象唤醒学生线程。最后,所有线程都结束后程序会输出"All students are ready for class!"。
阅读全文