面试题:实现死锁

简介: 面试题:实现死锁

实现死锁的思路很简单:


1、首先要有两个资源1和2,有两个线程A和B。

2、线程A抢到了资源1,线程B抢到了资源2。

3、同时,线程A想要资源2,他要等待线程B放弃手里的资源2;线程B想要资源1,他要等待线程A放弃手里的资源1,这个时候就形成死锁了。


public class Main {
    public static void main(String[] args) {
        //两个资源
        Object a = new Object();
        Object b = new Object();
        //一个线程
        new Thread(() -> {
            //先去拿a
            synchronized (a){
                System.out.println(Thread.currentThread().getName() + ": i got a!");
                //睡两秒,保证另一个线程能抢到另一个资源
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //再去拿b
                synchronized (b){
                    System.out.println(Thread.currentThread().getName() + ": i got b!");
                }
            }
        }).start();
        //另一个线程
        new Thread(()->{
            //先去拿b
            synchronized (b){
                System.out.println(Thread.currentThread().getName() + ": i got b!");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //再去拿a
                synchronized (a){
                    System.out.println(Thread.currentThread().getName() + ": i got a!");
                }
            }
        }).start();
    }
}



相关文章
|
11天前
|
SQL 算法 关系型数据库
面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决
面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决
|
4月前
|
Java API
Java面试题:解释死锁的概念,给出避免死锁的常见策略。你能给我一个具体的例子吗?
Java面试题:解释死锁的概念,给出避免死锁的常见策略。你能给我一个具体的例子吗?
42 0
|
6月前
面试官:什么是死锁?死锁产生的原因?如何避免死锁?
面试官:什么是死锁?死锁产生的原因?如何避免死锁?
45 0
面试官:什么是死锁?死锁产生的原因?如何避免死锁?
|
6月前
|
Java
Java线程面试题:什么是死锁?如何避免?
Java线程面试题:什么是死锁?如何避免?
71 0
|
6月前
|
算法 安全 调度
[操作系统] 面试宝典之~死锁连环系列
[操作系统] 面试宝典之~死锁连环系列
|
Java
第二季:10.死锁编码及定位分析【Java面试题】
第二季:10.死锁编码及定位分析【Java面试题】
66 0
|
安全 Java
【Java面试】什么是死锁?
【Java面试】什么是死锁?
59 0
|
安全 算法 Java
【Java面试宝典】线程安全问题|线程死锁的出现|线程安全的集合类
【Java面试宝典】线程安全问题|线程死锁的出现|线程安全的集合类
127 0
|
存储 关系型数据库 MySQL
面试官:解释下什么是死锁?为什么会发生死锁?怎么避免死锁?
开局先来个段子: 面试官: 解释下什么是死锁? 应聘者: 你录用我,我就告诉你 面试官: 你告诉我,我就录用你 应聘者: 你录用我,我就告诉你 面试官: 滚!
|
算法 Java 调度
Java 最常见的面试题:怎么防止死锁?
Java 最常见的面试题:怎么防止死锁?
113 0