线程同步引发的安全问题
来源:互联网 发布:mac苹果商店无法连接 编辑:程序博客网 时间:2024/05/30 18:29
/*两个线程共同访问同一资源,导致访问冲突,出现预期想法不一致的结果。
因为当thread 访问资源时,进入线程体,执行run(),如果此时bufCache=1,二thread进入休眠,
thread1也进入线程体。
等待thread休眠时间到了,bufCache-- = 0;
而Thread1也从休眠醒来,bufCache-- = -1,输入bufCache =0;与实际不符。
这就是多个线程同时访问同一资源,导致线程安全问题。
*/
解决办法:加入线程同步机制,
使用Synchronized关键字来确保在同一时刻只有一个线程访问同一资源,
而其他线程只有等待此线程释放该资源才可以执行。
1使用synchronized关键字描述要访问的方法
public sychornized void run(){}
2 使用synchronzed关键字描述要访问的快
sychronized (this){
if(bufCache>0){
try{
System.out.println("当前正在运行的线程是:" +Thread.currentThread().getName());
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"缓冲区的大小:"+bufCache--);
}
}
在多个线程访问同一obj时,执行到该程序时,则对Obj加锁2,其他线程只有等待obj解锁才可以执行
加入synchronized关键字的区别:
相等于线程进入休眠时也抱着资源(将该资源加上一把锁)不允许其他人使用,
保证了同一时刻只有一个线程访问同一资源。
- 线程同步引发的安全问题
- 线程同步---线程安全问题
- java基础之多线程的安全问题、同步
- 关于同步线程安全问题
- JAVA之多线程的安全问题(线程同步)
- 多线程(四)线程的同步之线程安全问题
- 多线程-线程安全问题的产生原因分析以及同步代码块的方式解决线程安全问题
- 线程安全问题(使用同步函数)
- java线程的同步安全问题三种解决办法
- 线程同步锁对象不同导致的安全问题及解决办法
- Java使用同步解决线程安全问题的弊端
- java再复习——线程的安全问题以及同步
- 多线程_同步代码块的方式解决线程安全问题
- 多线程_同步代码块解决线程安全问题的解释
- GTK+的线程安全问题
- Servlet的线程安全问题
- servlet的线程安全问题
- Structs的线程安全问题
- Java中List和ArrayList的区别
- JAVA: List用法
- java整型byte,short,int,long取值范围大小
- sql server 与 mysql在自定以数据类型的区别
- UVA - 10250 The Other Two Trees
- 线程同步引发的安全问题
- 线程之间的通信
- 模拟售票
- 线程死锁
- 自动装箱和拆箱所带来的问题(1)“==”问题
- js 中对象--对象结构(原型链基础解析)
- C/s模式与B/S模式
- 20160712常规赛总结
- 装箱与拆箱所带来的问题