java - 使实例同时只能由一个线程访问吗?

标签 java concurrency

我有一个java类:

class Card {

  private static Card instance = new Card();
  public int value:

  private Card() {}

  public static Card sharedInstange() {
     return instance;
  }

}

此类模拟一个可以由不同线程访问的共享实例。因此,实例变量值必须同步,以便一次只有一个线程可以读取和写入它。

如何实现我的Card类的实例变量一次只能被一个线程访问?

编辑:这是具有 getter 和 setter 的同一个类。

class Card {

  private static Card instance = new Card();
  private int value:

  private Card() {}

  public static Card sharedInstange() {
     return instance;
  }

  public int getValue() { return value; }

  public void setValue(int v) { this.value = v; }

}

最佳答案

使其具有 volatile ,并创建不带synchronized关键字的getter/setter。

或者只是将其设为AtomicInteger

关于java - 使实例同时只能由一个线程访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318027/

相关文章:

java - AtomicInteger 与同步的 getter/setter

java - 如何确保一个线程在另一个线程之前启动?

java - 获取/发送短信时如何获取GPS坐标?

java - 我的登录身份验证 Servlet 遇到问题

java - 为什么我的 KeyPressed 方法从未被调用?

java - 无法处理数字属性weka svm

java - Android:java.lang.IllegalArgumentException:错误对话线程 ID:15555215554

java - Java 中的信号条件变量触发等待

java - 同时求和的最佳方法

java - 在有等待任务时动态调整 java.util.concurrent.ThreadPoolExecutor 的大小