Java|面试官:请说一下Java同步容器( 二 )
因此为了解决同步容器的性能问题 , 在Java 1.5中提供了并发容器 , 位于java.util.concurrent目录下 , 并发容器的相关知识后续讲解 。
2)同步容器真的是安全的吗?
也有有人认为Vector中的方法都进行了同步处理 , 那么一定就是线程安全的 , 事实上这可不一定 。 看下面这段代码:
我们看到这段代码报错了:数组下标越界 。
也许有朋友会问:Vector是线程安全的 , 为什么还会报这个错?很简单 , 对于Vector , 虽然能保证每一个时刻只能有一个线程访问它 , 但是不排除这种可能:
当某个线程在某个时刻执行这句时:
假若此时vector的size方法返回的是10 , i的值为9
然后另外一个线程执行了这句:
将下标为9的元素删除了 。
那么通过get方法访问下标为9的元素肯定就会出问题了 。
因此为了保证线程安全 , 必须在方法调用端做额外的同步措施 , 如下面所示:
3) ConcurrentModificationException异常
在对Vector等容器并发地进行迭代修改时 , 会报ConcurrentModificationException异常 , 关于这个异常后续会讲解 , 但是在并发容器中不会出现这个问题 。
欢迎小伙伴们留言交流~~
推荐阅读
- Java|计算机专业的本科生,该选择学习Java技术体系还是.NET技术体系
- 小忠侃教育|笔试面试都过却被拒签,还没地儿说理去,“非全研究生”有多惨
- 小熊回收站|-链表阻塞队列和数组阻塞队列的异同,Java并发编程
- Java|马化腾登顶中国首富,微信、QQ却都免费使用,腾讯到底咋赚钱的?
- Java|为什么美团骑手总是闯红灯昵
- 阿里巴巴|java三大集合遍历方法
- 编程|JAVA基础-网络编程
- Java|Java中的天使和魔鬼:Unsafe类
- Java|面试官:连多线程问题你都一问三不知,还要我怎么“放水”?
- Java|Java--死锁详解