本节主要讲解了几个重要的Java并发集合:ConcurrentHashMap、ConcurrentLinkedQueue、CopyOnWriteArrayList、BlockingQueue、ConcurrentSkipListMap.
ConcurrentHashMap
当我们需要对键值对进行操作时,可以使用Hashmap,但对于高并发的情况下,显然是非线程安全的。由此,我们可以通过Collections.synchronizedMap()方法返回一个线程安全的map,但这个类使用synchronized关键字,并发级别并不高,对于高并发的情况下,执行效率也不会太高。所以,一个更加专业的并发HashMap出现了-ConcurrentHashMap。
位于Concurrent包下,其具体实现下回分解。
ConcurrentLinkedQueue
同样,对于linkedlist同样可以通过通过synchronizedList方法变为线程安全。但JDK定义了一种ConcurrentLinkedQueue来处理高并发的队列。应该是高并发下性能最好的队列。
同样位于Concurrent包下,其具体实现下回分解。
CopyOnWriteArrayList
一种线程安全的arraylist,考虑到可以通过读写锁减少对读写的锁数量,从而增加效率而设定的。即读操作尽可能的块,而写操作慢一些没关系,主要针对于读多的情况效率更佳。
实现原理为:读操作不上锁,写操作先复制一份,后上锁修改。
BlockingQueue
数据共享通道:是一个接口,具体实现为ArrayBlockingQueue与LinkedBlockingQueue
具体实现下回分解
ConcurrentSkipListMap
跳表:类似于一个分层的链表,即下一层是上一层的细分。每一层按顺序排放,是一种有序的map。同时,是一种使用空间换时间的算法。