在常用到的集合框架的实现类中,ArrayList、LinkedList、HashMap都是线程不安全的。
在有多个线程访问并修改他们的时候就会出现线程安全问题。
解决办法:
Collections类提供了多个方法将他们包装为线程安全的集合,通过api可以得到
static
| synchronizedList(List<T> list) 返回指定列表支持的同步(线程安全的)列表。 | |
static
| synchronizedMap(Map<K,V> m) 返回由指定映射支持的同步(线程安全的)映射。 | |
static
| synchronizedSet(Set<T> s) 返回指定 set 支持的同步(线程安全的)set。 |
List list = Collections.synchronizedList(new ArrayList());
Map map = Collections.synchronizedMap(new HashMap());
Set set = Collections.synchronizedSet(new HashSet());
更多详情,可以翻阅api的Collections类