持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
java并发容器三
前文
容器是java开发中常用的一类数据结构,当然其中也包含若干方面。前面已经讨论过几种容器,本文将继续对一些其他的容器内容进行探讨。前文的讨论内容主要是map类型的k、v结构,而
vector
这是一种经典的队列类型的数据容器,该容器是一种典型的线程安全容器。当点进容器内部的代码可以轻易的发现,所有的操作都采用了synchronized关键字进行加锁操作,也就保证了同一时刻仅有一个线程能够进行容器内数据的操作,从根本上保证了容器在并发环境下的线程安全。
linkedlist
linkedlist这是另一种常用的并发容器,与上面的vector类似,该容器的方法内部当进行数据操作时,都已经添加了synchronized关键字进行加锁处理,保证数据在多线程并发环境下的数据安全问题,同样是一种牺牲效率换取安全性的方式。回到该容器本身,它与平时采用的arraylist数组又有所不同。数组中元素属于按照索引顺序存储,而该容器属于链表的存储方案,每个元素仅记录其前后的两个元素。这样也就具有更高的插入及删除效率,但查找效率也会明显降低。
queue
这是另外一种经常使用的容器,但它与上面的容器又有所不同。它主要是一个队列的结构,所有的操作只能从队列顶部和底部进行处理。队列的特性在于先进先出,类似于一个单向的管道。而它本身而言并不是线程安全的,也就是不同线程会同时进行数据的操作。如果需要实现线程安全的效果,我们则需要通过自行的加锁进行实现,调用队列方法前首先采用synchronized关键字进行修饰加锁。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。