【说站】mysql死锁的四个条件
2025-01-11
27
mysql死锁的四个条件
四个条件
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电脑
更新于:9天前赞一波!
相关文章
- 【说站】mysql表分区的类型
- 【说站】mysql Binlog日志是什么
- 【说站】mysql Binlog日志如何启用
- 【说站】mysql Binlog事件的结构
- 【说站】mysql覆盖索引高性能的探究
- 【说站】mysql执行计划explain
- 【说站】mysql创建索引的三种方式
- 【说站】mysql多表查询如何实现
- 【说站】MySQL中join buffer是什么
- 【说站】mysql有哪些建立索引的方法
- 【说站】mysql表导出的两种方法
- 【说站】如何在mysql表中进行导入
- 【说站】mysql备份恢复策略是什么
- 【说站】mysql有哪些备份数据库的方式
- 【说站】mysql物理备份如何理解
- 【说站】mysql独占写锁是什么
- 【说站】mysql行锁的优缺点
- 【说站】MySQL中的逻辑备份是什么
- 【说站】mysql有哪些数据操作
- 【说站】mysql中SQL的概念介绍
文章评论
评论问答