启动3个线程打印递增的数字, 线程2先打印1,2,3,4,5, 然后是线程1打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程2打印16,17,18,19,20….以此类推, 直到打印到75.
时间: 2023-09-30 11:04:19 浏览: 71
Java实现多线程轮流打印1-100的数字操作
实现这个需求可以使用 Python 的 threading 模块来创建线程并控制线程执行顺序。下面是示例代码:
```python
import threading
class MyThread(threading.Thread):
def __init__(self, start_num, step, print_lock):
super().__init__()
self.start_num = start_num
self.step = step
self.print_lock = print_lock
def run(self):
while True:
with self.print_lock:
for i in range(self.start_num, self.start_num + self.step):
print(i, end=' ')
print()
self.start_num += 15
if self.start_num > 75:
break
def main():
print_lock = threading.Lock()
t1 = MyThread(6, 5, print_lock)
t2 = MyThread(1, 5, print_lock)
t3 = MyThread(11, 5, print_lock)
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
if __name__ == '__main__':
main()
```
这里定义了一个 MyThread 类,继承自 threading.Thread 类,实现了 run() 方法,用于打印一段数字序列,并且每次增加 15。在 run() 方法执行前,需要传入线程的起始数字、每次增加的步长和一个锁对象,用于控制打印的顺序。在 run() 方法中,通过 with 语句获取锁对象,打印数字序列,并且每次增加 15。当起始数字超过 75 后,退出循环,线程结束。
在 main() 函数中,创建 3 个线程,分别传入不同的起始数字和步长,并且传入同一个锁对象。调用 start() 方法启动线程,并且调用 join() 方法等待线程结束。这样就可以按照要求打印数字序列了。
阅读全文