trylock 用法_try可以没有catch吗

trylock 用法_try可以没有catch吗tryLock的使用业务场景方法说明用法业务场景对于某些并发业务场景,我们可能想保证同一时刻只有一个线程在执行某一方法。例如:对于缓存的初始化工作,此时我们可以使用tryLock()方法对代码进行上锁,只有拿到锁的线程可以执行操作,而其他线程则只会在进行一次尝试后返回false。方法说明Acquiresthelockonlyifitisnotheldbyanotherthreadatthetimeofinvocation.只有在调用时它是空闲的才能获取锁。获取锁

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

tryLock的使用

业务场景

对于某些并发业务场景,我们可能想保证同一时刻只有一个线程在执行某一方法。

例如:对于缓存的初始化工作,此时我们可以使用tryLock()方法对代码进行上锁,只有拿到锁的线程可以执行操作,而其他线程则只会在进行一次尝试后返回false。

方法说明

Acquires the lock only if it is not held by another thread at the time of invocation.
只有在调用时它是空闲的才能获取锁。
获取锁定(如果可用)并立即返回值true 。 如果锁定不可用,则此方法将立即返回值false 。

用法

public static void main(String[] args) { 
   

    ReentrantLock lock = new ReentrantLock();

    new Thread(() -> { 
   
        if (lock.tryLock()) { 
   
            System.out.println("A拿到锁了");
            try { 
   
                Thread.sleep(3000);
            } catch (InterruptedException e) { 
   
                e.printStackTrace();
            } finally { 
   
                lock.unlock();
            }
        } else { 
   
            System.out.println("A没有拿到锁");
        }
    }, "MyThread-A").start();

    new Thread(() -> { 
   
        if (lock.tryLock()) { 
   
            System.out.println("B拿到锁了");
            try { 
   
                Thread.sleep(3000);
            } catch (InterruptedException e) { 
   
                e.printStackTrace();
            } finally { 
   
                lock.unlock();
            }
        } else { 
   
            System.out.println("B没有拿到锁");
        }
    }, "MyThread-B").start();

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181771.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月15日 上午11:36
下一篇 2022年10月15日 上午11:36


相关推荐

  • PDO 用法学习「建议收藏」

    PDO 用法学习「建议收藏」PDO:phpdataobject 数据库访问抽象层 基于驱动: 1、安装扩展php_pdo.dll 2、安装驱动php_pdo_mysql.dlllinux编译时参数:–with-pd

    2022年8月5日
    12
  • 细粒度图像分析_图像分类研究现状

    细粒度图像分析_图像分类研究现状一、概述什么是细粒度图像分类细粒度图像分类问题是对大类下的子类进行识别。细粒度图像分析任务相对通用图像(General/GenericImages)任务的区别和难点在于其图像所属类别的粒度更为精细。以图1为例,通用图像分类其任务诉求是将“袋鼠”和“狗”这两个物体大类(蓝色框和红色框中物体)分开,可见无论从样貌、形态等方面,二者还是很容易被区分的;而细粒度图像的分类任务则要求对“狗”该类类别……

    2022年10月4日
    5
  • 详解java定时任务

    详解java定时任务在我们编程过程中如果需要执行一些简单的定时任务 无须做复杂的控制 我们可以考虑使用 JDK 中的 Timer 定时任务来实现 下面 LZ 就其原理 实例以及 Timer 缺陷三个方面来解析 javaTimer 定时器 一 简介 nbsp nbsp nbsp nbsp nbsp 在 java 中一个完整定时任务需要由 Timer TimerTask 两个类来配合完成 API 中是这样定义他们的 Timer 一种工具 线程用其安排以后在后台线程中执行的任务 可安排任

    2026年3月18日
    2
  • goland 激活码2021(破解版激活)

    goland 激活码2021(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    480
  • 轻松学,听说你还没有搞懂 Dagger2

    轻松学,听说你还没有搞懂 Dagger2Dagger2 确实比较难学 我想每个开发者学习的时候总是经历了一番痛苦的挣扎过程 于是就有了所谓的从入门到放弃之类的玩笑 当然不排除基础好的同学能够一眼看穿 本文的目的尝试用比较容易理解的角度去解释 Dagger2 这样东西 Dagger2 是有门槛的 这样不同水平能力的开发者去学习这一块的时候 感受到的压力是不一样的 我个人总结了大家在学习 Dagger2 时 为什么感觉难于理

    2026年3月19日
    2
  • sublime text3 激活码 2021(最新序列号破解)

    sublime text3 激活码 2021(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    236

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号