传递给函数的列表是否可以由Java中的另一个线程修改?
发布时间:2020-12-14 17:44:10 所属栏目:Java 来源:网络整理
导读:Integer getElement( ListInteger list ) { int i = Random.getInt( list.size() ); return list.get( i );} 问题:虽然这个函数是从一个线程调用的,但有一种方法传递给这个函数的列表可以被另一个线程修改吗? 解决方法 java.util.List不保证线程安全.列表
Integer getElement( List<Integer> list ) { int i = Random.getInt( list.size() ); return list.get( i ); } 问题:虽然这个函数是从一个线程调用的,但有一种方法传递给这个函数的列表可以被另一个线程修改吗? 解决方法
java.util.List不保证线程安全.列表可以在list.size()和list.get()之间由另一个线程更改.此外,内存不一致也是一个问题.
我可以想到三种解决方法: >使用不可变列表. Collections.unmodifiableList(列表)很好,Guava的ImmuntableList更好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |