【发布时间】:2018-04-11 06:24:05
【问题描述】:
Class A{
private boolean connected = false;
public void doAction(){
if(connected){
//do something
}
else{
//do this
}
}
public void setConnected(boolean flag)
{
this.connected = flag;
}
}
我的项目中有上面的代码,它是一个单例。 setConnected() 方法会在某些条件下被触发(它只会被触发一次)。
doAction() 方法被调度器定期调用以执行一些操作。
我的问题是,如果单例对象的状态在构造后被修改(通过调用setConnected()),更新后的状态对进一步调用方法调用可见(定期调用doAction())?(注意:已连接变量不是易失的)。
【问题讨论】:
-
你的 doAction 和 setConnected 方法是从不同的线程调用的吗?
-
是的,它是从不同的线程调用的
-
所以我强烈建议在你的情况下使用 volatile。仔细阅读我的答案以获得更多解释。
标签: java multithreading object thread-safety java-threads