我一直在思考和阅读,但可以找到绝对权威的答案。
我有几个由包含 ArrayList、字符串和原始值的对象组成的深层数据结构。我可以保证这些结构中的数据不会改变(没有线程会对列表进行结构更改、更改引用、更改原语)。
我想知道读取这些结构中的数据是否是线程安全的;即,从对象中递归读取变量、迭代 ArrayList 等以在不同步的情况下从多个线程中的结构中提取信息是否安全?
它不安全的唯一原因是,如果一个线程正在写入某个字段,而另一个线程同时从该字段读取数据。不竞争条件 http://en.wikipedia.org/wiki/Race_condition如果数据没有改变则存在。使对象不可变是保证它们线程安全的一种方法。从阅读开始this http://www.ibm.com/developerworks/java/library/j-jtp09263.html来自 IBM 的文章。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)