.启动3个线程打印递增的数字,控制线程1打印1,2,3,4,5(每行都打印线程名和一个数字),线程2打印6,7,8,9,10,线程3打印11,12,13,14,15;接下来再由线程1打印16,17,18,19,20,......依次类推,直到打印75。
时间: 2024-03-27 09:36:25 浏览: 16
好的,这是一个多线程编程的问题。我来给你提供一种可能的解决方案:
```python
import threading
class PrintThread(threading.Thread):
def __init__(self, name, start_num, end_num):
super().__init__()
self.name = name
self.start_num = start_num
self.end_num = end_num
def run(self):
for i in range(self.start_num, self.end_num+1):
print(f"{self.name}: {i}")
if self.name == "Thread1" and i == 5:
event.set()
elif self.name == "Thread2" and i == 10:
event.set()
elif self.name == "Thread3" and i == 15:
event.set()
event.wait()
event = threading.Event()
t1 = PrintThread("Thread1", 1, 5)
t2 = PrintThread("Thread2", 6, 10)
t3 = PrintThread("Thread3", 11, 15)
t1.start()
t2.start()
t3.start()
for i in range(16, 76):
event.wait()
print(f"Main thread: {i}")
event.clear()
```
这段代码创建了一个名为`PrintThread`的线程类,用于打印一定范围内的数字。在`run()`方法中,每个线程都会打印自己应该打印的数字,并根据条件设置`event`对象,然后等待其他线程的信号。
在主线程中,我们循环打印16到75的数字,每次打印完一个数字就等待`event`对象的信号,以确保打印顺序正确。
这段代码中用到了`threading.Event()`对象来协调多个线程的执行顺序。`event.wait()`方法会等待`event.set()`方法的调用,以确保执行顺序正确。
阅读全文