java中ReentrantLock类的tryLock和tryLock的例子和用法

java中ReentrantLock类的tryLock和tryLock的例子和用法ReentrantLock类的tryLock和tryLock(时间)马克-to-win:tryLock的方法就是试一下,如果能得到锁,就返回真,如果当时得不到,马上就返回假,绝不等。tryLock(时间)的用法就是在规定的时间内设法得到锁。如果在规定的时间内最终不能得到锁,就返回假。注意,这个方法是可以被打断的,打断后的处理方法和上面的例子lockInterruptibly的处理一样。…

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

Jetbrains全系列IDE稳定放心使用

ReentrantLock类的tryLock和tryLock(时间) 

马 克-to-win:tryLock的方法就是试一下,如果能得到锁,就返回真,如果当时得不到,马上就返回假,绝不等。tryLock(时间)的用法就是 在规定的时间内设法得到锁。如果在规定的时间内最终不能得到锁,就返回假。注意,这个方法是可以被打断的,打断后的处理方法和上面的例子 lockInterruptibly的处理一样。

例1.9.8_a:
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
class A {

    private ReentrantLock lock = new ReentrantLock();
    int ticketNum = 10;
    public void buyOne() {

        System.out.println(“just before lock.lockInterruptibly();”);
        boolean succeed = lock.tryLock();
        if (succeed) {

            System.out.println(Thread.currentThread().getName()
                    + “ticketNum is” + ticketNum);
            if (ticketNum > 0) {

                try {

                    Thread.sleep(5000);
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }
                ticketNum–;
                System.out
                        .println(“模仿select * from table for update,执行的很慢,买了一张”
                                + Thread.currentThread().getName()
                                + “ticketNum is” + ticketNum);
            }
            lock.unlock();
        }else{

            System.out.println(“没获得锁,一张”);
        }
    }

    public void buyBatch(int num) throws InterruptedException {

        System.out.println(“just before lock.lockInterruptibly();”);
        boolean succeed = false;
        boolean sleepSucceed = false;
        succeed = lock.tryLock(2, TimeUnit.SECONDS);
        if (succeed) {

            System.out.println(“Thread.currentThread().getName()+ticketNum is”
                    + ticketNum);
            try {

                Thread.sleep(5000);
                sleepSucceed=true;
            } catch (InterruptedException e) {

                System.out.println(“已经获得了锁了,几张的睡觉被打断,表示预备工作没做好,什么也不买”);
            }      

更多请见:https://blog.csdn.net/qq_43650923/article/details/101161930

 

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

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

(0)
上一篇 2022年10月8日 上午7:00
下一篇 2022年10月8日 上午7:00


相关推荐

  • tensor 和 numpy 的互相转换

    tensor 和 numpy 的互相转换为什么要相互转换:1.要对tensor进行操作,需要先启动一个Session,否则,我们无法对一个tensor比如一个tensor常量重新赋值或是做一些判断操作,所以如果将它转化为numpy数组就好处理了。下面一个小程序讲述了将tensor转化为numpy数组,以及又重新还原为tensor:2.Torch的Tensor和numpy的array会共享他们的存储空间,修改一个会导致另外的一…

    2022年10月19日
    10
  • javaWeb前后台交互(二)[通俗易懂]

    javaWeb前后台交互(二)[通俗易懂]接上一篇javaWeb前后台交互。链接:https://blog.csdn.net/blackplus28/article/details/80603863一、MVC思想责任分离思想.M:Model,数据模型对象.(JavaBean)V:View,视图界面.(JSP,Panel,Window)C:Controller,控制器(Servlet)本次代码采用:Tomc…

    2022年6月13日
    30
  • 2012年第一篇博文——致谢:2011年中国IT十大杰出博客获奖感言「建议收藏」

    2012年第一篇博文——致谢:2011年中国IT十大杰出博客获奖感言「建议收藏」在2012新年伊始之际,非常荣幸获得了2011年度十大杰出IT博客的殊荣,非常感谢各界朋友和同仁、51CTO的编辑、《网络协议本质论》和《蜕变:从菜鸟到Linux安全专家》等个人专著的热心读者在大赛期间对我的支持、关心和陪伴。51CTO博客是一个非常好的展示自己、促进交流、提升自我的平台。我以前专注于技术研究和项目管理,2年前通过51CTO这么一个好的平台找到了一条与大…

    2022年7月21日
    14
  • setInterval定时刷新,清空定时器clearInterval

    setInterval定时刷新,清空定时器clearInterval注 定时器对象不清空 会造成刷新效果叠加 随时间增加 刷新变频繁 varmyInterva 定义定时器对象 清空对象 if myInterval window clearInterva myInterval 定时器对象赋值 myInterval setInterval InitProduct pageIndex 10000

    2026年3月17日
    2
  • 什么是大前端,前端工程师要不要成为全栈工程师?

    什么是大前端,前端工程师要不要成为全栈工程师?不想成为全栈的前端不是好程序员 数年以前 全栈工程师的理念忽然风靡墙内外 成为开发者们津津乐道的话题 数年过去 关于全栈工程师的争议不多了 教你速成全栈工程师的视频课程多了起来 说明大家对于这个理念慢慢接受了 但我发现 鼓吹前端往全栈转型做的有点走火入魔 有的说前端应该成为 K 型人才 甚至部分招聘前端工程师的要求都写着 熟悉后端至少一门语言和框架 熟悉数据库 过分了啊 诚然 有了 Node 再加上 JavaScript 大杀四方 前端转型全栈的确是非常

    2026年3月20日
    2
  • AD域介绍

    AD域介绍域的背景介绍为什么要使用域?假设你是公司的系统管理员,你们公司有一千台电脑。如果你要为每台电脑设置登录帐户,设置权限(比如是否允许登录帐户安装软件),那你要分别坐在这一千台电脑前工作。如果你要做一些改变,你也要分别在这一千台电脑上修改。相信没有哪个管理员想要用这种不吃不喝不睡觉的方式来工作,所以就应运而生了域的概念。域(Domain):概念域模型就是针对大型网络的管理需求而设计的,域就是共享用户账号,计算机账号和安全策略的计算机集合。域的管理优点因为所有的用户信息都被集中存储,所以,域提供了集

    2022年5月17日
    108

发表回复

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

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