在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