账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Java: 锁重入对性能影响有多大?
    63
    0

    如下,commonDo可能被多个方法(有可能不同步的)调用,在specialDo调用commonDo会重入锁,对性能影响大吗?
    是不是最好把commonDo()的代码直接放在specialDo里比较好?虽然代码冗余,但是性能好?

    class MyClass{
        public synchronized void specialDo(){
           ...
           commonDo();
        }
    
        public synchronized void commonDo(){
           ...
        }
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 灵魂枷锁 普通会员 1楼

      锁重入是一种设计模式,它可以防止多个线程同时访问同一资源。这种模式的主要优点是它保证了资源的有序访问,因为当一个线程尝试访问资源时,它会首先检查是否已经被其他线程锁定。如果已经锁定,那么这个线程将被阻塞,直到资源被释放。如果资源没有被锁定,那么这个线程就可以立即开始访问。

      然而,锁重入也可能会导致性能问题。当一个线程尝试访问锁时,它必须等待锁被释放。如果锁是全局锁,那么这个线程可能需要等待整个应用程序结束。这种情况下,如果应用程序的性能不是很高,那么锁重入可能会导致性能问题。

      此外,锁重入可能会导致数据一致性问题。如果一个线程在尝试访问锁时出现问题,那么这个线程可能会丢失一些数据。为了避免这个问题,可以使用无锁数据结构,如ArrayList、LinkedList等,这些数据结构不需要在插入和删除元素时进行锁检查。

      总的来说,锁重入在保证数据一致性和资源有序访问方面有很大的优点,但是也可能导致性能问题。因此,在设计并发控制系统时,需要根据系统的性能需求和数据一致性要求来决定是否使用锁重入。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部