从资源占有层面研究死锁问题 导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。 “synchronized”关键词的作用是,确保在某个时刻只有一个线程被允
导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。 “synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执行特定的代码块, 因此,被允许执行的线程首先必须拥有对变量或对象的排他性的访问权。当线程访问对象时, 线程会给对象加锁,而这个锁导致其它也想访问同一对象的线程被阻塞,直至第一个线程释 放它加在对象上的锁。 由于这个原因,在使用“synchronized”关键词时,很容易出现两个线程互相等待对方做出某个动作的情形 死锁的经典案例:生产者消费者问题 如何避免死锁 1、尽量不要锁套锁,如果是在需要锁套锁,那么就一次性把需要的锁住的锁住 2.尽量锁对象的顺序保持一致