为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样写无法产生死锁

为什么这样写无法产生死锁

慕斯2107131 2019-03-31 17:16:44
public class DeadLockTest {     public static Integer s1 = 1;     public static Integer s2 = 1;     public static void main (String args[]){         DeadLockThread1 d1 = new DeadLockThread1();         d1.start();         DeadLockThread2 d2 = new DeadLockThread2();         d2.start();     } } class DeadLockThread1  extends Thread {     public void run() {         synchronized (DeadLockTest.s1){             try {                 Thread.sleep(3000);             } catch (InterruptedException e) {                 e.printStackTrace();             }             synchronized (DeadLockTest.s2) {                 System.out.println(Thread.currentThread().getName()+" is running");             }         }     } } class DeadLockThread2 extends Thread {     public void run() {         synchronized (DeadLockTest.s2){             try {                 Thread.sleep(3000);             } catch (InterruptedException e) {                 e.printStackTrace();             }             synchronized (DeadLockTest.s1) {                 System.out.println(Thread.currentThread().getName()+" is running");             }         }     } }但是如果将DeadLockTest类中的两个静态变量改为不同的值,就能产生死锁,这是为什么?
查看完整描述

1 回答

?
EnchantF

TA贡献19条经验 获得超4个赞

synchronized 关键字啊

数字相同,表示两者都有钥匙

数字不同,表示钥匙你需要我的钥匙,我也需要你的钥匙,所以就死了

查看完整回答
反对 回复 2019-04-01
  • 1 回答
  • 0 关注
  • 493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信