编程语言
首页 > 编程语言> > 在Java中,条件表达式是一个线程安全的操作吗?

在Java中,条件表达式是一个线程安全的操作吗?

作者:互联网

我想知道条件表达式是否是Java中的线程安全操作.
例如.:

return (mObject != null ? mObject.toString() : "null");  

所以,我的问题是:如果两个线程可以更改mObject,这个代码线程是安全的,还是开发人员需要处理任何竞争条件?

解决方法:

不,这绝对不是线程安全的.你肯定可以在这里获得NullPointerException.当然,它很容易修复:

Object tmp = mObject;
return tmp != null ? tmp.toString() : "null";

或者,在这种特殊情况下更容易:

return String.valueOf(mObject);

编辑:如评论中所述,如果你真的有两个线程竞相更新没有同步的值,那可能是更大问题的迹象……但我只是试着回答你特别提出的问题.

标签:java,multithreading,thread-safety,race-condition,conditional-expressions
来源: https://codeday.me/bug/20190716/1480418.html