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


相关推荐

  • ProgressDialog使用总结

    ProgressDialog使用总结

    2021年12月9日
    34
  • 学习Python之路之ipython的使用及Pycharm的安装[通俗易懂]

    学习Python之路之ipython的使用及Pycharm的安装[通俗易懂]一、Python的基础知识1、概念Python是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年。2、Python的特点优点:简单、优雅、明确 有强大的第三方库模块 可跨平台移植 一种面向对象的语言缺点:代码执行速度慢,相比C语言,不过现在python的异步并发框架导致执行速度慢 p…

    2022年8月27日
    2
  • leetcode-41缺失的第一个正数

    leetcode-41缺失的第一个正数原题链接给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1 提示:0 <= nums.length <= 300-231 <= nums[i] <= 231 – 1题解

    2022年8月8日
    11
  • canoe入门教程_简易手工制作

    canoe入门教程_简易手工制作转载自http://blog.michiru.me/posts/canoe-tutoiral-part-1.html简介CANoe是什么如果你和我一样接触了点车辆电子开发的话,你可能会听说过CANoe。CANoe是德国VectorInformatik出品的开发软件,主要用于主机厂(OEMs),或者ECU供应商进行CAN网络,或者CAN相关ECU的开发、分析、仿真、测试和

    2025年7月16日
    0
  • EMWIN 使用记录

    EMWIN 使用记录EMWIN使用记录回调函数WM_PAINT其中出现pMsg-&gt;hWin是对话框的客户区句柄,其父句柄就是控件句柄WM_INIT_DIALOG其中出现pMsg-&gt;hWin是对话框控件句柄,控件函数使用CreatXXX返回的句柄为控件句柄,window控件可能需要除外…

    2022年10月14日
    0
  • Mysql海量数据处理

    Mysql海量数据处理一说海量数据有人就说了直接用大数据,那只能说不太了解这块,为此我们才要好好的去讲解一下海量的处理海量数据的处理分为两种情况1)表中有海量数据,但是每天不是很快的增长2)表中有还流量数据,而且每天很快速的增长针对这了两种情况,我们给出的解决方案也不太一样,而且也不是所有的项目都是这样的情况。海量数据的解决方案1)使用缓存2)页面静态化技术3)数据库优化4)分离数据库中活跃的…

    2022年6月23日
    30

发表回复

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

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