首页 > 代码库 > 死锁模拟
死锁模拟
1 package ; 2 3 /** 4 * 死锁的四大条件 条件互斥 形成环路 循环等待 请求保持条件 5 * 6 * 避免死锁的方法:获取2把锁之前睡眠时间差越大,理论上会缓解一点. 死锁不能消除,只能避免或缓解 7 * (1) 互斥条件:一个资源每次只能被一个进程使用。 8 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 9 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 10 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 11 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之 12 一不满足,就不会发生死锁。 13 * 14 */ 15 16 public class DeadLock extends Thread { 17 String s1 = "hello"; 18 String s2 = "world"; 19 int i = 0; 20 21 public static void main(String[] args) { 22 DeadLock d = new DeadLock(); 23 DeadLock d1 = new DeadLock(); 24 d.i = 1; 25 d1.i = 2; 26 d.start(); 27 d1.start(); 28 } 29 30 public void run() { 31 while (i == 1) { 32 synchronized (s1) { 33 System.out.println(Thread.currentThread() + "first lock"); 34 synchronized (s2) { 35 System.out.println(Thread.currentThread() + "second lock"); 36 } 37 } 38 } 39 40 while (i == 2) { 41 synchronized (s2) { 42 System.out.println(Thread.currentThread() + "second lock"); 43 synchronized (s1) { 44 System.out.println(Thread.currentThread() + "first lock"); 45 } 46 } 47 } 48 } 49 50 }
死锁模拟
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。