java - 多线程应用程序中的静态计数器线程是否安全?

标签 java multithreading synchronization

public class counting
{
  private static int counter = 0;

  public void boolean counterCheck(){
  counter++;
  if(counter==10)
  counter=0;
  }
}

方法 counterCheck 可以被我的应用程序中的多个线程访问。我知道静态变量不是线程安全的。如果有人可以帮助我举例或告诉我为什么必须同步方法或 block ,我将不胜感激。如果我不同步会怎样?

最佳答案

这显然不是线程安全的。考虑两个完全并行运行的线程。如果计数器为 9,它们将各自递增计数器,导致计数器为 11。然后它们都不会看到该计数器等于 10,因此计数器将从那时起继续递增,而不是按预期包装。

关于java - 多线程应用程序中的静态计数器线程是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190290/

相关文章:

java - java中两个线程同时访问一个变量

安卓同步API?

java - OSGI:如何找出哪些 bundle 订阅了我的服务引用字典中定义的特定属性?

java - 在 Java、Android 上将视频转换为 mp3

java - Java中如何保证运行时参数化类型的正确性?

c++ - 线程时为C2893和C2672

Java在Executor Service池中的线程之间同步数据

c++ - 互斥体超时还需要释放吗?

java - 将 BufferedInputStream 传递给接受 InputStream 的方法

multithreading - 如何同时启动多个 Future 以填充单个 FutureBuilder ListView?