在日常开发中,我们都遇到过死锁的问题,当死锁问题产生时,会导致系统大量线程被阻塞,从而导致系统不能处理正常业务。比如MySQL中当我们批量更新数据时,在多线程并发环境下,如果插入前不对批量数据根据唯一键进行排序,那么就可能造成死锁,极端情况下会导致数据库连接被耗尽,从而不能进行正常的数据库操作。
所以,今天我将分享死锁问题是如何产生的、如何有效利用工具来排查死锁问题以及如何避免死锁的产生。
讲师介绍
加多,某大型互联网公司资深开发工程师,热衷并发编程,微服务架构设计,中间件基础设施,著作《Java并发编程之美》《Java异步编程实战》等
精选留言(10)
不得不这么做的时候,明确抢锁规则(顺序明确)做为开发规范。
互斥,持有并等待,不可剥夺,环路
破坏死锁,破坏其中一个条件
如资源有序分配
数据库的死锁问题如何排查呢?比如 MySQL