我有一个thread1
:
if(object != null){
object.play();
}
和另一个可以随时将null
写入object
引用的thread2
。
我将同时运行这些线程。我知道 thread2
可以在 null
检查后重写 object
引用,这将抛出 NullPointerException
。 thread2
是否可以在 NullPointerException
检查后重写 object
引用?
最佳答案
Is it possible to for thread2 to rewrite object reference after NullPointerException check ?
绝对 - 它可以在 play()
方法执行时更改 object
的值,如果这就是您的意思。这本身不会导致错误。
请注意,如果没有同步或其他内存屏障,线程 2 可能会在不确定的时间段内更改 object
的值,而线程 1 不会注意到。
如果不了解代码的更大目标,很难说出您应该做什么。
关于Java 空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781828/