什么叫做线程安全?看strtok函数接触的一个名词
来源:互联网 发布:新疆网络监控处置中心 编辑:程序博客网 时间:2024/05/01 05:00
比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。
在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
而如果是在多线程情况下,比如有两个线程,线程 A 先将元素1存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B向此 ArrayList 添加元素2,因为此时 Size 仍然等于 0 (注意,我们假设的是添加一个元素是要两个步骤,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值,结果Size等于2。
那好,我们来看看 ArrayList 的情况,期望的元素应该有2个,而 实际元素是在0位置,造成丢失元素,而且Size 等于 2。这就是“线程不安全”了。
转载自:http://baike.baidu.com/view/1298606.htm
0 0
- 什么叫做线程安全?看strtok函数接触的一个名词
- 什么叫做“线程安全”?
- 什么叫做一个数的因子、因数
- 什么叫做算法的?
- 多线程安全strtok函数MStrTok
- 多线程安全strtok函数MStrTok
- 线程安全”是一个什么概念?
- "线程安全"是一个什么概念?
- 从构造函数看线程安全
- 从构造函数看线程安全
- 自己写的一个功能类似于strtok函数的函数
- 线程安全——strtok VS strtok_r
- 线程安全——strtok VS strtok_r
- 什么叫做伪函数,或是函数对象?它的优点是什么?
- strtok函数的应用
- strtok函数的用法
- strtok函数的实现
- strtok函数的用法
- 解析XML--用php,dom来获得xml文件里的标签内value
- 多人合作中启动活动中传值的简明代码风格
- SQL语句(续)
- 在CentOS 6.3 64bit上安装MySQL for python模块
- android.os.NetworkOnMainThreadException
- 什么叫做线程安全?看strtok函数接触的一个名词
- iOS讲解迷惑--XMPP进阶 添加好友, 与好友聊天 (包括登录注册)
- table 中应用text-overflow
- Spark 入门之三:Spark运行框架
- 模拟器可以直接把Mac 的桌面文件做为iOS调试时存储的位置
- 大数据技术的事件处理上应该如何选择Linux服务器?
- ClassNotFoundException深入分析
- Linux下多线程模拟生产者/消费者问题
- 论ACM与泡妞