编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
时间: 2024-02-03 14:14:52 浏览: 175
3个线程,根据不同规则打印线程名称
下面是一个简单的示例代码,使用 Python 的 threading 模块实现:
```python
import threading
class PrintThread(threading.Thread):
def __init__(self, name, lock, next_lock):
super().__init__()
self.name = name
self.lock = lock
self.next_lock = next_lock
def run(self):
for i in range(10):
with self.lock:
print(self.name, end='')
self.next_lock.notify()
with self.next_lock:
self.next_lock.wait()
if __name__ == '__main__':
lock_a = threading.Lock()
lock_b = threading.Lock()
lock_c = threading.Lock()
lock_a.acquire()
lock_b.acquire()
lock_c.acquire()
thread_a = PrintThread('A', lock_a, lock_b)
thread_b = PrintThread('B', lock_b, lock_c)
thread_c = PrintThread('C', lock_c, lock_a)
thread_a.start()
thread_b.start()
thread_c.start()
lock_a.notify()
```
这个程序定义了一个 PrintThread 类,每个线程对象都拥有一个锁和下一个线程的锁。每个线程在运行时循环 10 次,打印自己的名字并通知下一个线程的锁,然后等待下一个线程的锁被通知后再继续执行。在主程序中先将第一个线程的锁通知一下,然后启动三个线程。最终输出结果为 ABCABCABCABCABCABCABCABCABCABC。
阅读全文