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


相关推荐

  • 【我的OpenGL学习进阶之旅】什么是TGA文件以及如何打开TGA文件?「建议收藏」

    什么是TGA文件?具有TGA文件扩展名的文件是Truevision图形适配器图像文件。它也很流行是Targa图形文件,TruevisionTGA或只是TARGA,这意味着Truevision高级栅格图形适配器。您可能会发现普通图像查看器无法打开TGA苍蝇。“Targa图形”格式的图像可能以原始格式或压缩格式存储,这对于图标,线条图和其他简单图像可能是首选。TGA格式通常与视频游戏中使用的图像文件有关。TGA文件可以是未压缩的原始文件,也可以是无损的RLE压缩文件。这种压缩方式对于图标和线条

    2022年4月8日
    81
  • busybox 安装mysql_安装busybox「建议收藏」

    busybox 安装mysql_安装busybox「建议收藏」安装busybox按以下步骤即可:1.root手机2.查看手机支持的cpu架构:cat/system/build.prop|grepabi我手机查出来的结果如下所示:ro.product.cpu.abi=armeabi-v7aro.product.cpu.abi2=armeabi3.下载适合你手机的Busybox,可以直接下载binary文件,地址如下:https://busybox.ne…

    2022年7月25日
    13
  • tensorflow所有版本_tensorflow最新版本

    tensorflow所有版本_tensorflow最新版本https://pypi.org/project/tensorflow-gpu/1.13.0/#files把13改对你想要的版本

    2022年8月2日
    99
  • J2EE架构简介_手机架构

    J2EE架构简介_手机架构J2EE体系结构简介J2EE(Java2Platform,EnterpriseEdition)即Java2平台企业版,它提供了基于组件的方式来设计、开发、组装和部署企业应用。J2EE使用多层分布式的应用模型,这个多层通常通过三层或四层来实现:①客户层,运行在客户计算机上的组件。②Web层,运行在J2EE服务器上的组件。③业务层,同样是运行在J2EE服务器上的组件。

    2022年10月11日
    4
  • hyper-v虚拟机安装xp系统网络不通_hyper-v转换vmware

    hyper-v虚拟机安装xp系统网络不通_hyper-v转换vmware下载一个ISO格式的XP系统镜像,把ISO文件设置为虚拟机的光驱,启动虚拟机,会自动从ISO镜像文件启动,创建虚拟机,创建虚拟磁盘VHD,然后加入启动项。打开本系统的磁盘管理,对虚拟磁盘进行格式化,并设置为活动分区(有一个就行)然后启动虚拟机,给虚拟机安装系统,就可以了。我是启动虚拟机后进入PE,然后选择Ghost32装的。如果启动虚拟机鼠标不能动,就点“

    2022年8月16日
    4
  • zookeeper入门教程_kubernetes github

    zookeeper入门教程_kubernetes githubzookeeperwatcher架构zookeeper 配置中心分布式ID分布式锁集群搭建数据一致性协议:zab协议Zookeeper Leader选举Observer角色及其配置watcher架构客户端首先将Watcher注册到服务器,同时将Watch对象保存到客户端的Watch管理器中。当Zookeeper服务器监听到的数据发生变化时,服务器会通知客户端,接着客户端的Watch管理器会触发相关的Watcher来回调响应处理逻辑,从而完成整体的数据发布/订阅流程。javaAPIJava

    2022年8月9日
    4

发表回复

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

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