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


相关推荐

  • Google EventBus 使用详解

    Google EventBus 使用详解EventBus是Google.Guava提供的消息发布-订阅类库,它实现了观察者设计模式,消息通知负责人通过EventBus去注册/注销观察者,最后由消息通知负责人给观察者发布消息。首先使用 maven 依赖:<!– https://mvnrepository.com/artifact/com.google.guava/guava –> <dependenc…

    2022年6月17日
    118
  • Shiro安全框架入门篇(登录验证实例详解与源码)

    Shiro安全框架入门篇(登录验证实例详解与源码)

    2020年11月12日
    211
  • 15. PARTITIONS「建议收藏」

    15. PARTITIONS「建议收藏」15.PARTITIONSPARTITIONS表提供有关表分区的信息。此表中的每一行对应于分区表的单个分区或子分区。有关分区表的更多信息,请参见分区。PARTITIONS表有以下列:TABLE_CATALOG:表所属目录的名称。该值始终为def。TABLE_SCHEMA:表所属schema(databas…

    2022年4月19日
    37
  • android onresume函数,android – 在Activity中重新创建后未调用onResume

    android onresume函数,android – 在Activity中重新创建后未调用onResume在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。我也收到错误:E/ActivityThread:Performingpauseofactivitythatisnotresumed从this问题开始,我了解到不能从onResume调用此函数。但是我从onActivityResul…

    2022年6月2日
    108
  • CIO时代APP上线了!每天微讲座等让IT学习“兴趣随身”

    CIO时代APP上线了!每天微讲座等让IT学习“兴趣随身”

    2021年5月27日
    171
  • pcep协议什么意思_SDN学习笔记

    pcep协议什么意思_SDN学习笔记SDN什么是SDNSDN是一种框架和思想,核心诉求是通过软件控制网络,实现业务的自动化部署,为方便软件来控制网络,希望控制面和转发面是分离的。例如,传统的交换机内部,由交换机负责具体的网络流量往哪里转发,在SDN中,有一个控制器进行流量转发的计算,然后将结果发送给交换机,交换机只进行简单的转发,从分布式的控制转发过程称为集中式的控制,使得控制和转发平面相分离。SDN的特点网络开放可编程、数控分离(…

    2022年9月7日
    0

发表回复

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

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