谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解

        当涉及多线程并发访问共享资源时,Synchronized 关键字是 Java 中用于实现线程同步的关键工具。它可以应用于不同层次,包括类锁、方法锁以及重入锁。

        1. Synchronized 关键字:
        Synchronized 关键字可以用来创建临界区,保证在同一时间只有一个线程可以进入临界区执行代码,避免多线程环境下的数据竞争和不一致性问题。

        2. 类锁:
        **类锁:** 用 Synchronized 修饰静态方法或使用 Synchronized 块锁住 Class 类对象。
         **作用范围:** 类锁作用于整个类的所有实例对象,即使有多个实例也只允许一个线程进入临界区。

        3. 方法锁:
         **方法锁:** 使用 Synchronized 修饰非静态方法。
        **作用范围:** 方法锁作用于当前对象实例,在同一时间内只允许一个线程进入该实例对象的 Synchronized 方法。

        4. 重入锁(Reentrant Lock):
        **Reentrant Lock:** 是 Java 中提供的显式锁,通过 Lock 接口和实现类 ReentrantLock 来实现。
        **特点:** 与 Synchronized 不同,Reentrant Lock 提供了更灵活的锁机制,支持公平性设置、可中断的锁获取、超时获取锁、尝试非阻塞获取锁等功能。
        **重入性:** 与 Synchronized 一样,Reentrant Lock 也支持重入特性,同一个线程可以多次获取同一把锁,而不会死锁。

         重要概念:
         **可重入性(Reentrancy):** 指的是同一个线程在持有锁的情况下,能够重复获取该锁,而不会因为自己已经持有锁而被阻塞。Synchronized 和 Reentrant Lock 都支持可重入性。
        **同步代码块:** 使用 Synchronized 关键字包围的代码片段,被一个线程执行时,其他线程不能同时执行这段代码。
         **线程安全性:** 使用 Synchronized 或 Reentrant Lock 等机制来保证多线程环境下的数据一致性和正确性,避免因为并发访问导致的问题。

        选择使用 Synchronized 还是 Reentrant Lock 取决于需求。Synchronized 更简单易用,而 Reentrant Lock 提供了更多的功能和灵活性。无论哪种方式,都能够确保多线程环境下的数据安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭梓航

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值