[JAVA学习笔记-84]关于死锁故障的反思

xiaoxiao2021-02-28  45

1、注意隐式的锁竞争 隐式的锁竞争,可能会造成意外的死锁,如HashMapA.putAll(HashMapB),如果HashMapB是synchronized封装的,此处隐式的HashMapB.size() 会竞争HashMap,可能造成死锁。 2、尽量使用明锁 明锁即reentrantLock,Object等显式调用的锁,或者用synchronized标记的函数/代码块 3、尽量避免对Synchronized的collection对象并发的遍历 4、较复杂的锁引用关联,建议绘制锁关系图进行分析 所谓锁关系图,即各个线程之间,通过锁建立的联系。 可以通过查找引用的方式绘制此图。
转载请注明原文地址: https://www.6miu.com/read-76673.html

最新回复(0)