【发布时间】:2010-05-05 07:46:15
【问题描述】:
是的,私有成员变量bar 应该是final 对吧?但实际上,在这种情况下,简单地读取int 的值是一个原子操作。那么这在技术上是线程安全的吗?
class Foo {
private int bar;
public Foo(int bar) {
this.bar = bar;
}
public int getBar() {
return bar;
}
}
// 假设无限数量的线程在Foo 的同一实例上重复调用getBar。
编辑:
假设这是Foo 类的所有代码;任何引用Foo 实例的线程都无法更改bar 的值(无需使用反射等)
【问题讨论】:
-
我想强调一下,bar 除了构造函数之外没有setter...您可以更改代码,使类名以大写字母开头。
-
很好看。当然
bar没有设置器,我要问的问题是是否存在与 N 个线程相关的问题,所有线程都试图同时读取可变值?
标签: java concurrency int