微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决返回值时必须使用同步吗?

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 举报,一经查实,本站将立刻删除。