1.进程死锁及解决办法
一、要点提示
(1) 掌握死锁的概念和产生死锁的根本原因。
(2) 理解产生死锁的必要条件--以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。
(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。
(4) 掌握死锁的预防策略中资源有序分配策略。
(5) 理解进程安全序列的概念,理解死锁与安全序列的关系。
(6) 了解银行家算法。
(7) 了解资源分配图。
(8) 了解死锁的检测及恢复的思想。
2.关于死锁,我个人的理解:
经过一段时间的学习,我理解的死锁概念就是,比如有两段进程,每一个进程中都被两把锁(锁1、锁2),锁着。不同的是,在两段进程中,锁的应用位置不同。从而产生了,一个进程的完整启动,内部需要一把锁,而这把锁又恰巧在另一个进程那里。另一个进程想要完整启动(或执行)内部所需要的那把锁又在另一个程序里。这样互相牵绊着,都处于准备状态却无法向下执行。造成了死锁状态。我根据理解画了示意图:
public class Test15 {public static void main(String[] args) throws InterruptedException {new Thread(new DeadLockThread(true)).start();//Thread.sleep(10);在中间用上它可以使结果交替出现,我是为了看死锁的效果,用它对比一下。new Thread(new DeadLockThread(false)).start(); } }class DeadLockThread implements Runnable {static Object o1 = new Object();static Object o2 = new Object();private boolean flag; DeadLockThread(boolean flag) {this.flag = flag; }public void run() {if (flag == true) {while (true) {synchronized (o1) { System.out.println("这是锁o1");synchronized (o2) { System.out.println("这是锁o2"); }
打印结果:
Atas ialah kandungan terperinci Java中死锁的概念及解决办法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!