线程安全的误解: 线程安全并不是否定资源共享
来源:互联网 发布:2017网络暴力案例 编辑:程序博客网 时间:2024/05/17 00:57
线程安全的误解: 线程安全并不是否定资源共享
(2010-08-04 17:36:48)转载▼
标签:
线程安全
杂谈
分类:java和数据库- 之所以造成这个误解,大概跟线程安全的几种解决手段有关.
- 同步技术
- 多用方法内局部变量
- ThreadLocal技术(一线程,一实例变量copy)
- 线程安全的定义:
而多线程对共享资源的改变,也是理论值之一.即理论上是接受共享资源被多个线程改变的.
- 举例如下:
下面这段程序是存在线程安全问题的,但"共享售票"并不意味着线程不安全
public class MyThread implements Runnable {
}
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 1
因为程序执行太快了,来不及显性产生线程安全问题,我们在run()中加一个Thread.sleep(300)方法
D:\java\source\thread\sync>javasyndemo.SynDemo01
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 1
卖票:ticket = 0
卖票:ticket = -1
当剩最后一张票时
上一个进程通过了(this.ticket >0)的判断,却sleep了,没来得及把this.ticket--
而另一个进程趁机也通过了(this.ticket > 0)的判断
这样就形成了ticket=1时两个线程都通过测试,都进行了--,就出现了-1
0 0
- 线程安全的误解: 线程安全并不是否定资源共享
- 线程安全的误解: 线程安全并不是否定资源共享
- 线程安全的误解: 线程安全并不是否定资源共享
- iosGCD线程安全之资源共享
- DCLP不是线程安全的?
- crypt()不是线程安全的
- 加密算法不是线程安全的
- DefaultControllerFactory不是线程安全的
- ffmpeg不是线程安全的
- contentProvider不是线程安全的
- Android 的View不是线程安全的.
- 图片缩放UIGraphicsGetImageFromCurrentImageContext不是线程安全的
- 图片缩放UIGraphicsGetImageFromCurrentImageContext不是线程安全的
- STL容器不是线程安全的
- SimpleDateFormat 为什么不是线程安全的
- SimpleDateFormat不是线程安全的类
- hashSet不是线程安全的验证
- android UI操作不是线程安全的
- 从零开始学习 ASP.NET MVC 1.0 (二) 识别URL的Routing组件
- Storm 环境配置及Storm starter运行
- Ubuntu12.04LST 上搭建 TELNET服务 SSH服务 TFTP服务,NFS服务等基本命令,防火墙
- 同步异步请求
- 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例
- 线程安全的误解: 线程安全并不是否定资源共享
- java学习第一集
- 阅读原著
- 打入“ 内部”寻“内幕”
- 代码分析二:泛型方法与反射
- 深入理解生产消费者模式
- 创建和使用静态库 (C++)
- Symmetric Tree
- Kconfig详解