Java多线程专题之Lock锁的使用

前言

目前正在出一个Java多线程专题长期系列教程,从入门到进阶含源码解读, 篇幅会较多, 喜欢的话,给个关注❤️ ~

Lock基本使用

Lock它是java.util.concurrent.locks下的一个接口,它也是用来处理线程同步问题的。

private static void reduce1(){
    if(lock.tryLock()) {
        try {
            count--;
        }finally {
            // 释放锁
            lock.unlock();
        }
    }else {
        System.out.println("no");
    }
}

通过上面的使用,我们来和Synchronized做一个对比

  • 表面上一个是关键字,一个是类

  • 使用上,Synchronized隐式,而Lock需要显示,对代码要求比较高,如果忘了释放锁可能会导致死锁

  • Lock提供了tryLock方法,使得程序更加灵活

  • 代码表现上Lock更加的灵活,可以在不同的方法中执行

结束语

本节主要讲了它的基本使用,大家可以举一反三,试试什么条件下会导致死锁。下一节,带大家探究一下Lock的底层和源码分析 ~

往期内容推荐

项目源码(源码已更新 欢迎star⭐️)

  • java-thread-all

  • 地址: https://github.com/qiuChengleiy/java-thread-all.git

推荐 SpringBoot & SpringCloud (源码已更新 欢迎star⭐️)


本篇文章来源于微信公众号: 程序员皮卡秋



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2023-06-27