多线程模拟一个计数器,一个线程递增计数器,另一个线程打印计数器当前值
时间: 2023-08-04 11:24:27 浏览: 87
好的,这是一个经典的多线程问题。可以使用Python的`threading`模块来实现。
以下是一个基本的实现:
```python
import threading
class Counter:
def __init__(self):
self.value = 0
def increment(self):
self.value += 1
def get_value(self):
return self.value
def worker1(counter):
while True:
counter.increment()
def worker2(counter):
while True:
print(counter.get_value())
if __name__ == '__main__':
counter = Counter()
thread1 = threading.Thread(target=worker1, args=(counter,))
thread2 = threading.Thread(target=worker2, args=(counter,))
thread1.start()
thread2.start()
```
在这个实现中,我们首先定义了一个`Counter`类,它有两个方法:`increment()`和`get_value()`分别用于递增计数器和获取当前计数器的值。
然后我们定义了两个线程`worker1`和`worker2`,分别调用`increment()`和`get_value()`方法。这两个线程会一直循环执行。
最后,我们创建了一个`Counter`对象和两个线程对象,并启动了这两个线程。
需要注意的是,这个实现没有进行任何线程同步,因此可能会出现竞态条件。如果需要保证线程安全,可以使用锁或其他同步机制。
阅读全文