Java并发编程中,Synchronized关键字和ReentrantLock的使用场景对比案例

原创 ╰半夏微凉° 2024-12-04 22:12 152阅读 0赞

在Java并发编程中,synchronized关键字是JDK提供的一个原生同步机制,而ReentrantLock是Spring Framework提供的一种更灵活的锁实现。

  1. 使用场景对比:
  • synchronized

    • 优点:简单直接,适用于代码块级别的同步。
    • 缺点:锁定粒度为对象(或方法),可能影响多线程环境下的并发性。
  • ReentrantLock

    • 优点:提供了更细粒度的控制,支持公平、非公平等多种行为模式,易于理解和使用。
    • 缺点:相比于原生同步,可能会增加一定的性能开销,尤其是在频繁获取锁的情况下。
  1. 案例对比:
  • 原生同步:

    1. public class SynchronizedExample {
    2. private Object lock = new Object();
    3. public void synchronizedMethod() {
    4. synchronized (lock) {
    5. // 执行业务逻辑
    6. System.out.println("Executing method...");
    7. }
    8. }
    9. public static void main(String[] args) {
    10. SynchronizedExample example = new SynchronizedExample();
    11. example.synchronizedMethod();
    12. }
    13. }
  • ReentrantLock
    ```java
    import java.util.concurrent.locks.ReentrantLock;

public class ReentrantLockExample {
private final ReentrantLock lock = new ReentrantLock();

  1. public void reentrantSynchronizedMethod() {
  2. lock.lock(); // 获取锁
  3. try {
  4. // 执行业务逻辑
  5. System.out.println("Executing method...");
  6. } finally {
  7. // 无论是否抛出异常,都会解锁
  8. lock.unlock();
  9. }
  10. }
  11. public static void main(String[] args) {
  12. ReentrantLockExample example = new ReentrantLockExample();
  13. example.reentrantSynchronizedMethod();
  14. }

}
`` 通过以上两个例子,你可以看到synchronized关键字和ReentrantLock`的使用方式以及它们在并发编程中的应用场景。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,152人围观)

还没有评论,来说两句吧...

相关阅读