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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 创建位图索引

    创建位图索引创建位图索引位图索引 1 位图索引与 B 树索引不同 位图索引不存储 rowid 值 数据实际物理地址 也不存储键值 2 在特殊的列上创建位图索引 3 特殊的列是指该列的基数很低的列 基数 列值的数量比列的行数来的小 举例 性别列的取值只有 2 个 男女 但是性别列的行数远远大于该列的取值 4 基数很低的列不适合 B 树索引 适合位图索引 oracle 建议 当一个列的所有取值数量与该列的行数比小于 1

    2025年10月9日
    2
  • 空间回归与地理加权_时空地理加权回归对样本量要求

    空间回归与地理加权_时空地理加权回归对样本量要求实际上,除了辅助表以外,GWR还会生成一份全要素的表。对回归的每一个样本都给出相应的信息,今天就来看看这些信息代表了什么内容。生成的新的要素类字段信息如下:实际上,Coeffcient(系数)和StandardErrorConffcient(标准差系数)会对每一个解释变量都给出一个值,所以可以看成是两类值,下面把各个值的情况和意义做个简单描述:其中ArcGIS

    2022年9月26日
    2
  • 嵌入式软件工程师待遇怎么样

    嵌入式软件工程师待遇怎么样本来大家选择嵌入式也就是冲着嵌入式的发展前景不错而来,所以在嵌入式这块还是有很多不知道的知识,这些也都要等着老师去给你讲解了,下面先来了解下嵌入式软件工程师待遇怎么样吧。嵌入式软件工程师待遇怎么样:1、应届毕业生如果你是在一线城市的话,有人带你,你自己有比较学的好,那么你的薪资待遇就可以达到6k+,但是不同公司不同待遇,而且不同地区不同的薪资待遇,就像北上广,这些地区薪资待遇是比其他地区高出2k以上,甚至更高的。就像人家阿里,那工资肯定就比其他公司要高的多。所以得看你要去什么地方发展了,但是平均

    2025年11月20日
    3
  • jetbrains golang 2021 激活码【永久激活】[通俗易懂]

    (jetbrains golang 2021 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

    2022年3月21日
    340
  • [WebView其中一项研究]:Web Apps基本介绍

    [WebView其中一项研究]:Web Apps基本介绍

    2022年1月5日
    62
  • UVM概述及uvm_component和uvm_object(一)

    UVM概述及uvm_component和uvm_object(一)UVM UniversalVer 通用验证方法学 UVM 是建立在 systemverilo 平台上的一个库 提供了一系列的接口 让我们能够更方便的进行验证 验证平台组成 Driver 用来把不同的激励施加给 DUT Monitor 用来检测 DUT 的输出 Scoreboard 专门用来比较期望值与 monitor 检测到的 DUT 输出 Refer

    2025年7月14日
    2

发表回复

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

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