两个线程轮流打印数字,一直到100。
时间: 2024-02-25 09:09:08 浏览: 21
好的,这是一个经典的线程同步问题。可以使用两个线程和一个共享的变量来实现。一个线程负责打印偶数,另一个线程负责打印奇数,他们轮流打印直到打印到100为止。
下面是一个使用Python语言的实现示例:
```python
import threading
class PrintNumbers:
def __init__(self):
self.n = 0
self.lock = threading.Lock()
def print_even(self):
while self.n < 100:
with self.lock:
if self.n % 2 == 0:
print(self.n)
self.n += 1
def print_odd(self):
while self.n < 100:
with self.lock:
if self.n % 2 == 1:
print(self.n)
self.n += 1
p = PrintNumbers()
t1 = threading.Thread(target=p.print_even)
t2 = threading.Thread(target=p.print_odd)
t1.start()
t2.start()
t1.join()
t2.join()
```
这个程序创建了一个PrintNumbers类,其中有一个共享变量n和一个Lock对象。print_even()和print_odd()方法分别打印偶数和奇数,他们都使用了with语句来获取Lock对象,并检查n的值是否是偶数或奇数,如果是则打印并增加n的值。主程序创建了两个线程,一个调用print_even()方法,另一个调用print_odd()方法,最后等待两个线程完成。