返回值时必须使用同步吗?

问题描述

package counter;

公共类 TrivialCounter 实现 Counter {

private int value;

@Override
public void increment() {
    value++;
}

@Override
public int value() {
    return value;
}

}

我在一个类中有这两个方法,我们需要提供一个线程安全的代码,我们可以使用不同的方式(同步块、同步方法、AtomicInteger..)。显然它们必须在 increment() 中使用,因为我们有一个写-修改-读操作符,然后它可能会导致竞争条件。但我有两个问题:

  1. 我是否也对 value() 方法使用同步?因为我没有对它做任何操作,但它是一个字段,它在线程之间共享,所以也许如果我只访问它,我必须使用同步。
  2. AtomicInteger 是否足以拥有线程安全代码?因为对 value 字段使用 AtomicInteger 允许对其进行原子操作,但是可见性呢?我不提供..

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)