[面试题] Java高并发中的集合有哪些?
直接开背:
在jdk1.0中就存在了Vector和Hashtable,这两者均是直接采用synchronized修饰方法以保证线程安全,然而这样的处理形式导致性能不高,因此在jdk1.2之后引入了ArrayList、LinkedList、HashMap等线程不安全的集合,这些线程不安全的集合性能会更高,但是想要用ArrayList、HashMap,并希望保证其线程安全,可以使用Collections类中的SynchronizedList、SynchronizedMap内部类,通过调用Collections.synchronizedList
、Collections.synchronizedMap
等方式,以传值的方式将ArrayList、HashMap传入,返回值即是SynchronizedList、SynchronizedMap,虽然底层同样是synchronized代码块锁,但并没有锁方法头,可以细粒度化。除此之外,可以使用JUC包下的线程安全集合类,ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet等,采用CAS操作,既保证了一定的性能,又保证了线程安全性。
至此说明:
评论区 催更其他面试题。谢谢~~🙏