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


相关推荐

  • 中缀表达式转后缀表达式(非常简单易懂)

    中缀表达式转后缀表达式(非常简单易懂)前言数据结构与算法中经常遇到中缀表达式转前缀表达式的题目 网上的教程大都很不直观 自己学的时候 也走了很多弯路 现在把一个简单易懂的算法教程分享出来 中缀转后缀举个例子 一个式子 5 20 1 3 14 5 20 1 3 14 5 20 1 3 14 如何把该式子转换成后缀表达式呢 其实就是分三步 1 按运算符优先级对所有运算符和它的运算数加括号 原本的括号不用加 2 把运算

    2025年11月21日
    6
  • 有哪些顶级水平的中国程序员?[通俗易懂]

    有哪些顶级水平的中国程序员?[通俗易懂]本文转载自启舰杂谈我们熟知的很多程序员都是国外的。那我们中国有没有顶尖级的程序员,出于好奇,我全网进行了搜罗,这里把我认为比较厉害的一些程序员展示给大家。篇幅有限,很多程序员我也没听过,所以就没有展示。排名顺序也没什么特别的,先看上谁,谁就排第一。比如,第一的尤雨溪单纯就是因为他长的帅如果你认为还有哪位大咖是你心目中的神,可以列出来,如果列的人多的话,我再搞一期给大家介绍介绍。一、尤雨溪江湖流传一个小故事:一款名叫Clear的软件,在…

    2022年10月11日
    5
  • JavaScript获取时间戳的几个方法

    JavaScript获取时间戳的几个方法JavaScript 获取时间戳 JavaScript 简单获取时间戳骚操作 Date 类型之间的运算本质上是调用 valueOf 以后转成时间戳参与计算

    2026年3月19日
    2
  • 视音频数据处理入门:RGB、YUV像素数据处理[通俗易懂]

    视音频数据处理入门:RGB、YUV像素数据处理[通俗易懂]有段时间没有写博客了,这两天写起博客来竟然感觉有些兴奋,仿佛找回了原来的感觉。前一阵子在梳理以前文章的时候,发现自己虽然总结了各种视音频应用程序,却还缺少一个适合无视音频背景人员学习的“最基础”的程序。因此抽时间将以前写过的代码整理成了一个小项目。

    2022年7月16日
    15
  • 寺庙旁的猪都会念经!

    寺庙旁的猪都会念经!

    2021年7月29日
    58
  • pycharm卸载

    pycharm卸载转载自 https blog csdn net weixin article details

    2026年3月27日
    5

发表回复

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

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