这期内容当中小编将会给大家带来有关mysql中死锁的条件有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1、四个条件
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
2、实例
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中死锁的条件有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。