如何解决返回值时必须使用同步吗?
package counter;
公共类 TrivialCounter 实现 Counter {
private int value;
@Override
public void increment() {
value++;
}
@Override
public int value() {
return value;
}
}
我在一个类中有这两个方法,我们需要提供一个线程安全的代码,我们可以使用不同的方式(同步块、同步方法、AtomicInteger..)。显然它们必须在 increment() 中使用,因为我们有一个写-修改-读操作符,然后它可能会导致竞争条件。但我有两个问题:
- 我是否也对 value() 方法使用同步?因为我没有对它做任何操作,但它是一个字段,它在线程之间共享,所以也许如果我只访问它,我必须使用同步。
- AtomicInteger 是否足以拥有线程安全代码?因为对 value 字段使用 AtomicInteger 允许对其进行原子操作,但是可见性呢?我不提供..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。