Java实现多线程模拟一个计数器,一个线程递增计数器,另一个线程打印计数器当前值
时间: 2023-08-04 16:24:27 浏览: 110
好的,以下是一个Java实现,同样使用了`Thread`和`synchronized`关键字来实现线程同步:
```java
public class Counter {
private int value = 0;
public synchronized void increment() {
value++;
}
public synchronized int getValue() {
return value;
}
}
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
Thread incrementThread = new Thread(() -> {
while (true) {
counter.increment();
}
});
Thread printThread = new Thread(() -> {
while (true) {
System.out.println(counter.getValue());
}
});
incrementThread.start();
printThread.start();
}
}
```
在这个实现中,我们首先定义了一个`Counter`类,它有两个方法:`increment()`和`getValue()`,都使用`synchronized`关键字来保证线程安全。
然后我们定义了两个线程,一个是递增计数器的线程`incrementThread`,另一个是打印计数器当前值的线程`printThread`。这两个线程都使用一个`Counter`对象进行操作,并且都使用了一个无限循环来持续执行。
最后,我们启动了这两个线程。
需要注意的是,这个实现中使用了`synchronized`关键字来保证线程安全,但是可能会出现性能问题。如果需要更高效的实现,可以考虑使用`Lock`或其他同步机制。
阅读全文