并发编程基础-死锁

mjjackey

关注

阅读 59

2022-01-08

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

下面直接上代码.

@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)

0 0 举报