• 技术文章 >数据库 >MySQL

    mysql死锁的四个条件

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

    四个条件

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

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

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

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

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    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中如何共享读锁• mysql使用关联查询的注意点• mysql中LIMIT分页如何优化• mysql查询优化策略有哪些• mysql乐观锁如何实现

    全部评论我要评论

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

  • 取消发布评论
  • 

    Python学习网