我经常看到这样的代码:
Listener mListener;
public void setListener(Listener listener){
mListener=listener;
}
public void fooFunction(){
...
...
if (mListener!=null){
mListener.notifyFoo();
}
}
我的问题是:如果在 null 检查和 notifyFoo() 之间另一个线程调用 setListener(null) 怎么办?那可能吗?还是编译器使它成为原子的