线程同步之死锁的原因和解决方法
2017-10-07 15:33
204 查看
造成死锁的原因:
1、 自己锁自己。线程获得锁A,没有给自己解锁又去拿锁A,一直阻塞造成死锁。
2、 两个共享数据,两把锁AB。线程一获得锁 A后又去获取锁B,但是线程二获得B锁又去获取A锁,两者都拿不到对方的锁,两者造成死锁。
解决方法:
1让线程按顺序访问共享资源。
2在访问另外一个共享资源之前先解锁已经拥有的锁
3在访问之前使用trylock函数尝试加锁,如果失败就直接返回
1、 自己锁自己。线程获得锁A,没有给自己解锁又去拿锁A,一直阻塞造成死锁。
2、 两个共享数据,两把锁AB。线程一获得锁 A后又去获取锁B,但是线程二获得B锁又去获取A锁,两者都拿不到对方的锁,两者造成死锁。
解决方法:
1让线程按顺序访问共享资源。
2在访问另外一个共享资源之前先解锁已经拥有的锁
3在访问之前使用trylock函数尝试加锁,如果失败就直接返回
相关文章推荐
- 产生死锁的原因和必要条件+解决死锁的基本方法
- I2C死锁原因及解决方法
- I2C死锁原因及解决方法
- Mysql并发时经典常见的死锁原因及解决方法
- Mysql并发时经典常见的死锁原因及解决方法
- UI thread client callback和UI thread WCF Service一起工作时死锁的形成原因及解决方法
- Oracle发生死锁原因分析及解决方法
- 产生死锁的原因和必要条件+解决死锁的基本方法
- Oracle常见死锁发生的原因以及解决方法
- 产生死锁的原因和必要条件+解决死锁的基本方法
- Oracle常见死锁发生的原因以及解决方法
- Java多线程产生死锁的原因和解决方法
- 产生死锁的原因和必要条件 解决死锁的基本方法
- MSSQL产生死锁的根本原因及解决方法
- sqlserver 死锁原因及解决方法
- I2C死锁原因及解决方法【转】
- Mysql并发时经典常见的死锁原因及解决方法
- MSSQL死锁产生原因及解决方法
- 死锁,死锁产生的原因,产生死锁的必要条件和解决死锁的方法
- 多线程编程:线程死锁的原因以及解决方法