当前位置 : 主页 > 编程语言 > c++ >

java多线程-死锁初步研究

来源:互联网 收集:自由互联 发布时间:2021-07-03
从资源占有层面研究死锁问题 导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。 “synchronized”关键词的作用是,确保在某个时刻只有一个线程被允
从资源占有层面研究死锁问题
导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。
 “synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执行特定的代码块,
 因此,被允许执行的线程首先必须拥有对变量或对象的排他性的访问权。当线程访问对象时,
 线程会给对象加锁,而这个锁导致其它也想访问同一对象的线程被阻塞,直至第一个线程释
 放它加在对象上的锁。

  由于这个原因,在使用“synchronized”关键词时,很容易出现两个线程互相等待对方做出某个动作的情形

  死锁的经典案例:生产者消费者问题

  如何避免死锁
1、尽量不要锁套锁,如果是在需要锁套锁,那么就一次性把需要的锁住的锁住
2.尽量锁对象的顺序保持一致
网友评论