小编Ste*_*rts的帖子

初始化对象的Java线程安全性

考虑以下课程:

public class MyClass
{
    private MyObject obj;

    public MyClass()
    {
        obj = new MyObject();
    }

    public void methodCalledByOtherThreads()
    {
        obj.doStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

由于obj是在一个线程上创建并从另一个线程访问的,因此当调用methodCalledByOtherThread时,obj可能为null吗?如果是这样,将obj声明为volatile是解决此问题的最佳方法吗?声明obj作为最终会有什么不同吗?

编辑:为清楚起见,我认为我的主要问题是:其他线程是否可以看到obj已经被某个主线程初始化或者obj可能是陈旧的(null)?

java concurrency thread-safety

2
推荐指数
1
解决办法
1100
查看次数

标签 统计

concurrency ×1

java ×1

thread-safety ×1