【发布时间】:2015-12-07 21:50:35
【问题描述】:
在以下情况下,volatile 是多余的吗?删除volatile 在这里会有什么不同吗?或者,离开 volatile 但删除同步块和同步修饰符在这里会有什么不同吗?
private volatile boolean registered;
synchronized boolean registered() {
return registered;
}
void setRegistered(boolean registered) {
synchronized (this) {
this.registered = registered;
}
}
【问题讨论】:
-
可能值得注意的是,
synchronized语句可能是不必要的(除非您希望在我们看不到的其他同步块期间不调用这些方法)。在这种情况下,使用synchronized封装volatile变量违背了volatile状态的目的。
标签: java concurrency synchronized volatile