1. 死锁 如果线程需要获取多把锁那么就很可能会发现死锁;t1线程获取锁x时,又尝试获取锁y;同时t2线程获取锁y时,又尝试获取锁x;t1要获取t2已经持有的锁y,t2又要获取t1已经持有的锁x,此时将出现互相等待的情况。 2. 代码示例 package org.example; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.TimeUnit; @Slf4j public class DeadLock { static Object x = new Object(); static Object y = new Object(); public static void main(String[] args) { new Thread(()->{ synchronized (x){ log.info("t1 lock x"); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (y){ log.info("t1 lock y"); } } },"t1").start(); new Thread(()->{ synchronized (y){ log.info("t2 lock y"); try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (x){ log.info("t2 lock x"); } } },"t2").start(); } } 3. 查看打印