多线程的安全问题
2014-01-27 23:41
183 查看
多线程安全问题产生的原因
1. 产生的前提1> 多个线程操作共享的数据;
2> 操作共享数据的代码超过1条;
2. 产生的原因
当一个线程在执行操作共享数据的多条代码的过程中,其它线程也参与了运算,就会导致线程安全问题产生。
class TicketRunnable implements Runnable
{
private int num = 100;
public void run()
{
while(true)
{
//这里存在线程安全问题
if(num > 0)
{
//分析导致线程不安全的原因后加入sleep加快问题的暴露
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
}
//
System.out.println(Thread.currentThread().getName()+ "...sale..." + num--);
}
//<------->
}
}
}
class ThreadSafety
{
public static void main(String[] args)
{
//创建任务
TicketRunnable tr = new TicketRunnable();
//创建线程
Thread t1 = new Thread(tr);
Thread t2 = new Thread(tr);
Thread t3 = new Thread(tr);
Thread t4 = new Thread(tr);
t1.start();
t2.start();
t3.start();
t4.start();
}
}图解上例中线程安全问题产生的原因:
相关文章推荐
- c++调用 c#的dll
- UVA10033
- 安装64位win7后配置php mysql Apache 遇到问题并解决~~
- 115家IT公司待遇一览表
- 突破数据库防下载的简单几招
- Oracle8i到Oracle11g的主要变化
- GOOGLE分布式数据库技术演进研究--从Bigtable、Dremel到Spanner(二)
- Coursera 《机器学习》(Lecture 04)
- POJ 1300 判断是否存在欧拉回路(包含定理)
- 2.5 python中的列表和元组 [python入门教程]
- 字符串常量与字符数组
- uva 839 Not so Mobile
- 驱动和class
- Build your Eclipse projects(Visual Studio online编译Eclipse中的项目)
- Spring Web MVC实现Restful Web Service
- 蜗牛的天空
- GOOGLE分布式数据库技术演进研究--从Bigtable、Dremel到Spanner(二)
- npoi 2.0.1下载地址
- 解决python print延迟问题
- 【管理心得之三】管理者们扪心自问一下 “你们杀了几个属下”