Java Multithreading - Threadsafe Counter
2022-09-02 19:18:43
我从多线程中一个非常简单的例子开始。我正在尝试制作一个线程安全计数器。我想创建两个线程,间歇性地递增计数器以达到1000。代码如下:
public class ThreadsExample implements Runnable {
static int counter = 1; // a global counter
public ThreadsExample() {
}
static synchronized void incrementCounter() {
System.out.println(Thread.currentThread().getName() + ": " + counter);
counter++;
}
@Override
public void run() {
while(counter<1000){
incrementCounter();
}
}
public static void main(String[] args) {
ThreadsExample te = new ThreadsExample();
Thread thread1 = new Thread(te);
Thread thread2 = new Thread(te);
thread1.start();
thread2.start();
}
}
据我所知,while 循环现在意味着只有第一个线程可以访问计数器,直到它达到 1000。输出:
Thread-0: 1
.
.
.
Thread-0: 999
Thread-1: 1000
我该如何解决这个问题?如何获取线程以共享计数器?