标签:死锁 判断 获取 代码块 同步 范围 带来 分解 导致
加锁本身不会带来多少性能的损耗,性能的损耗主要在获取锁的过程。
1.尽量不要锁住方法,因为在普通成员函数上加锁,线程获得的是该方法所在对象的对象锁;
2.缩小同步代码块,尤其是一些循环操作、同步IO操作,并且不止是在代码行数上缩小同步块,在执行逻辑上也应该缩小,例如多增加一些条件判断,在符合条件的情况下再进行同步;
3.锁中尽量不要再包含锁,可能导致死锁;
4.将锁私有化,外部不能拿到这个对象,更安全一些;
5.进行适当的锁分解,将锁的范围最小化,与其一大段被锁着只能一个线程顺序处理,不如分成多个小段提升效率;
7.选择合适特性的锁,比如互斥锁、可重入锁、读写锁等;
标签:死锁 判断 获取 代码块 同步 范围 带来 分解 导致
原文地址:https://www.cnblogs.com/yuanfei1110111/p/10134132.html