在面试过程中我们可能会遇到面试官当场让你实现一个死锁,有些同学可能背了很多概念,但是依然很难实现这个功能,下面我就简单介绍一个"套路'',可以让你快速实现一把属于你自己的死锁,而且基本上不会再忘记!!!
下面直接上代码.
@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(); } }