为实现线程安全,Collections内定义内部类,内部类里定义了相应集合中的函数
如下
public boolean add(E e) { synchronized (mutex) // mutex是Collections相应内部类的成员变量,充当锁 { returnc.add(e); //c指Collection对象 } }
ArrayList<String> arrayList = new ArrayList<String>();
因为写了内部类,所以Collections.synchronizedList(arrayList);的返回值不可能还是ArrayList
1)List<String> list = Collections.synchronizedList(arrayList);
2)ArrayList<String> list = (ArrayList<String>) Collections.synchronizedList(arrayList);
方式1和方式2 那个能够保证线程安全,还是说都可以?
|