死锁(Deadlock)知识点详解


死锁(Deadlock)知识点详解


1. 死锁的定义

多个线程因竞争资源而陷入相互等待的状态,若无外力干预,所有线程将无法继续执行。


2. 死锁产生的四个必要条件
条件 说明
互斥(Mutual Exclusion) 资源一次只能被一个线程占用(如锁)。
持有并等待(Hold and Wait) 线程持有至少一个资源,同时等待其他线程占有的资源。
不可抢占(No Preemption) 线程持有的资源只能主动释放,不能被其他线程强制抢占。
循环等待(Circular Wait) 存在线程的循环等待链,每个线程都在等待下一个线程持有的资源。

3. 死锁示例代码
public class DeadlockDemo {
   
    private static final Object lockA = new Object();
    private static final Object lockB = new Object();

    public static void main(String[] args) {
   
        new Thread(() -> {
   
            synchronized (lockA) {
   
                System.out.println("线程1持有lockA");
                try {
   
                    Thread.sleep

你可能感兴趣的:(java知识点,java,jvm,开发语言)