java中ReentrantLock类的tryLock和tryLock的例子和用法
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.cn/184710.html原文链接:https://javaforall.cn
相关文章
- 二级java程序设计--Java SDK6.0的下载和操作[通俗易懂]
- Java详解:淘宝秒杀脚本java
- Java基础知识总结(超详细整理),java从入门到精通pdf「建议收藏」
- C语言和Java哪个难学?[通俗易懂]
- java uuid 随机数_Java随机数和UUID[通俗易懂]
- ringbuffer java例子_Java RingBuffer.publish方法代碼示例「建议收藏」
- springboot更改项目名_java 文件重命名
- java 事务嵌套_Java事务以及嵌套事务[通俗易懂]
- mybatis自定义分页_java分页查询接口的实现
- java反射 getMethod_JAVA 反射 getMethod() 和 invoke() 具体应用[通俗易懂]
- springboot 解决跨域问题_java解决跨域问题
- Java基础学习(3)
- Java开发之文件上传详解编程语言
- 经验总结Java在ACM算法竞赛编程中易错点详解编程语言
- java中由类名和方法名字符串实现其调用【反射机制】详解编程语言
- 时间设置Redis Java过期时间的方法(redisjava过期)
- Linux下搭建 Java 开发环境(linux搭建java环境)
- 使用Java监听MySQL数据库变化(java监听mysql)
- 在Linux上实现Java程序的运行(linux运行java程序)
- 使用Java程序执行Linux指令:实现自动化操作(java执行linux命令)
- Java与Oracle同步一种新的数据库模式(java同步oracle)
- Java递归算法的使用分析
- java中使用Filter控制用户登录权限具体实例
- Java使用jxl包写Excel文件适合列宽实现