昨天,同事优化加锁方式时,出现死锁了
摘要:最近,在优化程序的加锁方式时,竟然出现了死锁!!到底是为什么呢?!经过仔细的分析之后,终于找到了原因。
本文分享自华为云社区《【高并发】优化加锁方式时竟然死锁了!!》,作者: 冰 河。
写在前面
最近,在优化程序的加锁方式时,竟然出现了死锁!!到底是为什么呢?!经过仔细的分析之后,终于找到了原因。
为何需要优化加锁方式?
我们在转账类TansferAccount中使用TansferAccount.class对象对程序加锁,如下所示。
public class TansferAccount{ private Integer balance; public void transfer(TansferAccount target, Integer transferMoney){ synchronized(TansferAccount.class){ if(this.balance >= transferMoney){ this.balance -= transferMoney; target.balance += transferMoney; } } } }