Java 空检查

标签 java concurrency null

我有一个thread1:

if(object != null){
   object.play();
}

和另一个可以随时将null写入object引用的thread2

我将同时运行这些线程。我知道 thread2 可以在 null 检查后重写 object 引用,这将抛出 NullPointerExceptionthread2 是否可以在 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/

相关文章:

ios - UITableView 在滚动时得到空项目

linq - 使用Linq时,DbNull是否等于Null?

java - 如果属性名称不等于字段名称,则 Jackson @JsonProperty 不起作用

java - 静态方法的 doAnswer - PowerMock

dictionary - 具有固定大小的 Golang 并发访问映射/数组

java - 具有容器管理事务的单例 EJB 并发

java - 未找到代理 JAR 或没有代理类属性

java - 如何将日期转换为 ZonedDateTime?

.net - 从 BlockingCollection<> 中删除特定项目

java - 正则表达式保留空输入