高并发中的集合问题
第一代线程安全集合类
Vector、Hashtable
使用synchronized修饰方法保证线程安全,但效率低下
第二代线程非安全集合类
ArrayList、HashMap
线程不安全、性能好
使用Collections.synchronizedList(list)、Collections.synchronizedMap(map)保证线程安全
底层使用synchronized代码块锁,虽然也是锁住了所有代码,但锁在方法里面,比锁在方法外面性能有所提高(进方法本身需要分配资源)。
第三代线程安全集合类
java.util.concurrent.*中的ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet
底层大都使用Lock锁(jdk1.8中的ConcurrentHashMap没有使用Lock锁),保证安全的同时,性能也很高。