. 模拟三个老师同时给50个小朋友发苹果,每个老师相当于一个线程。代码怎么写
时间: 2024-02-27 11:51:48 浏览: 125
这里提供一个使用 Python 语言的示例代码:
```python
import threading
class Teacher(threading.Thread):
def __init__(self, name, apples, lock):
threading.Thread.__init__(self)
self.name = name
self.apples = apples
self.lock = lock
def run(self):
while True:
self.lock.acquire()
if self.apples > 0:
self.apples -= 1
print(f"{self.name} 发给一个小朋友一个苹果,还剩 {self.apples} 个苹果")
self.lock.release()
else:
self.lock.release()
break
if __name__ == "__main__":
apples = 50
lock = threading.Lock()
teachers = []
for i in range(3):
teacher = Teacher(f"Teacher {i+1}", apples, lock)
teachers.append(teacher)
for teacher in teachers:
teacher.start()
for teacher in teachers:
teacher.join()
```
以上代码创建了一个 `Teacher` 类用于模拟老师的行为,每个老师都是一个线程。`Teacher` 类继承自 `threading.Thread` 类,并实现了 `run` 方法用于定义线程的行为。
在 `main` 方法中,首先创建了一个锁对象 `lock` 用于保证对苹果的发放是同步的。然后创建了三个老师的线程,并启动这些线程。最后等待所有线程执行完毕。
在 `Teacher` 类的 `run` 方法中,首先获取锁对象 `lock`,然后判断苹果的数量是否大于 0。如果大于 0,则发给一个小朋友一个苹果,并打印此次发放的信息。否则释放锁对象并退出循环。
这样就实现了模拟三个老师同时给50个小朋友发苹果的功能。
阅读全文