博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArrayList为什么是线程不安全的?
阅读量:3959 次
发布时间:2019-05-24

本文共 315 字,大约阅读时间需要 1 分钟。

List接口的两个实现,ArrayList和vector。vetor同步锁synchronized 关键字,

举例:
ArrayList ,在添加一个元素的时候,分两步完成:
1. 在 Items[Size] 的位置存放此元素
2. 增大 Size 的值。  
在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 ,所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。
元素只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了 。

转载地址:http://pvazi.baihongyu.com/

你可能感兴趣的文章
通过研究微信文章的相关推荐逻辑 ,尝试生成指南| Mixlab设计黑客
查看>>
浏览器低成本实现免手提的用户体验,使用人脸、手势、姿态追踪 | Mix群聊
查看>>
这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活 | MixAI 知识库 No.70...
查看>>
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>
富人和穷人的12个经典差异
查看>>