美文网首页
Vector & Collections.synchro

Vector & Collections.synchro

作者: 大黑跟小白的日常 | 来源:发表于2019-02-21 21:41 被阅读35次

    Vector简单使用

    Vector也是一个类似于ArrayList的可变长度的数组类型,它的内部也是使用数组来存放数据对象的;

    值得注意的是Vector与ArrayList使用上的唯一的区别是,Vector是线程安全的,即它的大部分方法都包含有关键字synchronized;

    Arraylist在空间扩容方面,与Vector最大的不同就是,Vector增长是100%,ArrayList增长是50%;

    因此,若对于单一线程的应用来说,最好使用ArrayList代替Vector,因为这样效率会快很多(类似的情况有StringBuffer与StringBuilder);

    而在多线程程序中,为了保证数据的同步和一致性,可以使用Vector代替ArrayList实现同样的功能;

    ArrayList 的 add 方法 中的 size++ 在多线程并发的情况下是线程 不安全的~!

    所以ArrayList 的 size方法 返回的 size 的值是非同步增加的值,是不正确的~!

    而Vector的add方法在方法申明上就加了线程安全锁~

    所以elementCount++属于原子操作,所以size()获取的elementCount也是正确的

    Collections打包封装非同步集合的工具

    多次执行,不再出现线程干扰产生错误list.size()现象

    由上可以看出,Collections的同步封装工具,保证了list的线程安全性,不过在多线中,并发的对象得是封装好的Collection

    相关文章

      网友评论

          本文标题:Vector & Collections.synchro

          本文链接:https://www.haomeiwen.com/subject/buxjyqtx.html