Collections工具类可以将List接口中线程不安全的工具类转换为线程安全的对象
Collections工具类跟Vector相比,Collections的代码灵活度更好,性能更好
Collections工具类同步代码本质如下
public E get(int index) {
synchronized (mutex) {
return list.get(index);}
}
public E set(int index, E element) {
synchronized (mutex) {
return list.set(index, element);}
}
public void add(int index, E element) {
synchronized (mutex) {
list.add(index, element);}
}
public E remove(int index) {
synchronized (mutex) {
return list.remove(index);}
}
举个栗子
private static List list=new ArrayList();
List syncList = Collections.synchronizedList(list);
Collections源码
public static <T> List<T> synchronizedList(List<T> list) {
return (list instanceof RandomAccess ?
new SynchronizedRandomAccessList<>(list) :
new SynchronizedList<>(list));
}
其它对象转换方法如下