• 技术文章 >数据库 >MySQL

    mysql死锁的四个条件

    小妮浅浅小妮浅浅2021-07-01 09:32:08原创1878

    四个条件

    1、互斥条件:一个资源每次只能被一个进程使用。

    2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

    3、不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

    4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    实例

    public class DeadLockDemo {
        public static Object one = new Object();
        public static Object two = new Object();
        public static void main(String[] args) {
            new Thread(() -> {
             //获取第一个锁,并且不会被其他线程抢占
                synchronized (one) {
                    try {
                        System.out.println(Thread.currentThread().getName() + "获得one锁,等待two锁。");
                        //确保第二个线程此时先获取到了第二个锁
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    //请求获取第二锁,并且任然持有第一个锁
                    synchronized (two) {
                        System.out.println(Thread.currentThread().getName() + "获得two锁。");
                    }
                }
            }).start();
            new Thread(() -> {
                synchronized (two) {
                    try {
                        System.out.println(Thread.currentThread().getName() + "获得two锁,等待one锁。");
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (one) {
                        System.out.println(Thread.currentThread().getName() + "获得one锁。");
                    }
                }
            }).start();
        }
    }

    以上就是mysql死锁的四个条件,希望对大家有所帮助。更多mysql学习指路:MySQL

    推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

    专题推荐:mysql死锁
    品易云
    上一篇:mysql如何解除死锁 下一篇:查看mysql版本的命令

    相关文章推荐

    • mysql间隙锁是什么• mysql中如何共享读锁• eclipse连接mysql• mysql使用关联查询的注意点• mysql中LIMIT分页如何优化• mysql查询优化策略有哪些• mysql乐观锁如何实现

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网