0
点赞
收藏
分享

微信扫一扫

并发编程基础-死锁

mjjackey 2022-01-08 阅读 59
java面试

在面试过程中我们可能会遇到面试官当场让你实现一个死锁,有些同学可能背了很多概念,但是依然很难实现这个功能,下面我就简单介绍一个"套路'',可以让你快速实现一把属于你自己的死锁,而且基本上不会再忘记!!!

下面直接上代码.

@Slf4j
public class DeadLock {

    /**
     * 定义两把锁
     */
    static Object lock1 =new Object();

    static Object lock2 =new Object();

    public static void main(String[] args) {

        new Thread(()->{
            synchronized (lock1){
                log.debug("locked lock1");
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lock2){
                    log.debug("locked lock2");
                    log.debug("get lock thread is t1");
                }
            }

        },"t1").start();

        new Thread(()->{
            synchronized (lock2){
                log.debug("locked lock2");
                try {
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lock1){
                    log.debug("locked lock1");
                    log.debug("get lock thread is t2");
                }
            }

        },"t2").start();

    }
}
举报

相关推荐

0 条评论