Lock的tryLock()方法
概述
tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。
代码
@Testpublic void testTryLock() {Lock lock = new ReentrantLock();new Thread() {@Overridepublic void run() {String tName = Thread.currentThread().getName();if (lock.tryLock()) {System.out.println(tName + "获取到锁!");} else {System.out.println(tName + "获取不到锁!");return;}try {for (int i = 0; i < 5; i++) {System.out.println(tName + ":" + i);}Thread.sleep(5000);} catch (Exception e) {System.out.println(tName + "出错了!!!");} finally {System.out.println(tName + "释放锁!!");lock.unlock();}}}.start();new Thread() {@Overridepublic void run() {String tName = Thread.currentThread().getName();if (lock.tryLock()) {System.out.println(tName + "获取到锁!");} else {System.out.println(tName + "获取不到锁!");return;}try {for (int i = 0; i < 5; i++) {System.out.println(tName + ":" + i);}} catch (Exception e) {System.out.println(tName + "出错了!!!");} finally {System.out.println(tName + "释放锁!!");lock.unlock();}}}.start();}
运行结果
Thread-0获取到锁!
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-1获取不到锁!
Lock的tryLock()方法相关推荐
- Lock锁-------tryLock()方法
这一次主要学习Lock接口中的**tryLock()**方法. tryLock()方法是有返回值的,返回值是Boolean类型.它表示的是用来尝试获取锁:成功获取则返回true:获取失败则返回fals ...
- Lock的tryLock(long time, TimeUnit unit)方法
概述 tryLock(long time, TimeUnit unit)方法和tryLock()方法是类似的,只不过区别在于这个方法在拿不到锁时会等待一定的时间,在时间期限之内如果还拿不到锁,就返回f ...
- Lock锁的方法使用
文章目录 1 Lock 1.1 lock() 方法 1.2 tryLock()方法与 tryLock(long time, TimeUnit unit)方法 1.3 lockInterruptibly ...
- redisson lock、tryLock分布式锁原理解析
近期在处理程序有两个不同来源入口的时候,因为容易产生并发情况,造成会有脏数据产生,在同事推荐下使用redisson的锁来解决并发问题. 先上使用的一定程度封装的工具类: 工具类 @Service pu ...
- Redisson之lock()和tryLock()的区别
Redisson之lock()和tryLock()的区别和原理解析 在Redisson中 lock() 方法 与 tryLock() 方法是有区别的! 我们先来阐述两者的区别,再分析它们的源码. lo ...
- Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法
Ubuntu中出现"Could not get lock /var/lib/dpkg/lock"的解决方法 参考文章: (1)Ubuntu中出现"Could not ge ...
- MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法 参考文章: (1)MySQL5.7报错[ERROR ...
- 记一次MySQL中Waiting for table metadata lock的解决方法
记一次MySQL中Waiting for table metadata lock的解决方法 参考文章: (1)记一次MySQL中Waiting for table metadata lock的解决方法 ...
- Redis - Redisson lock和tryLock原理解析
Redisson 分布式锁原理 1. 工具类 package com.meta.mall.common.utils;import lombok.extern.slf4j.Slf4j; import o ...
最新文章
- 大型软件公司.net面试题!一定得看(附答案)
- Spring源码学习笔记1
- 【Python学习系列五】Python网络爬虫框架Scrapy环境搭建
- 算法练习day5——190322(快排、建堆、调整堆)
- SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面...
- JavaScript对象中的this属性
- python中打乱顺序的函数_numpy.random.shuffle打乱顺序函数的实现
- 用友T6打开UFO报表提示登录失败
- 乐橙tp1 html调用,乐橙TP1的妙用
- 【Unity】UI面板:倒计时器
- struct和typedef struct的用法和区别
- 中国数字商业核心产业链分布
- 【图形学】布林冯BlinnPhong
- 线性嵌套实例(三个小实例)
- 分词器——ik——分词算法
- ubuntu企业微信和微信无法发送和显示图片和截图问题
- 解决方案:No space left on device
- linux 启用dhcp服务器,linux下DHCP服务器配置
- c++语言程序设计教程与实验实验报告,C++程序设计课程设计实验报告—网络五子棋...
- [已解决] ‘strncpy‘ output truncated before terminating nul copying?bytes from a string of the same leng
热门文章
- 顺时针小球圆周运动Java编程_如何使用CSS实现圆周运动小球的实例
- c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改
- java中间语言汇编语言_中间语言(IL) | 学步园
- mysql xml语句_Mysql语句
- php生成不重复时间戳,PHP获取时间戳和微秒数以及生成唯一ID
- 聚宽macd底背离_许多散户不知道:MACD月线金叉,MACD月金叉都会带来一波牛市!...
- kernal tch 下载 天正_tch kernal.arx
- mysql join图解_MySQL中Join算法实现原理分析[多图]
- 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
- salt 启动mysql_saltsack自动化配置day03:服务部署mysql部署