概述

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()方法相关推荐

  1. Lock锁-------tryLock()方法

    这一次主要学习Lock接口中的**tryLock()**方法. tryLock()方法是有返回值的,返回值是Boolean类型.它表示的是用来尝试获取锁:成功获取则返回true:获取失败则返回fals ...

  2. Lock的tryLock(long time, TimeUnit unit)方法

    概述 tryLock(long time, TimeUnit unit)方法和tryLock()方法是类似的,只不过区别在于这个方法在拿不到锁时会等待一定的时间,在时间期限之内如果还拿不到锁,就返回f ...

  3. Lock锁的方法使用

    文章目录 1 Lock 1.1 lock() 方法 1.2 tryLock()方法与 tryLock(long time, TimeUnit unit)方法 1.3 lockInterruptibly ...

  4. redisson lock、tryLock分布式锁原理解析

    近期在处理程序有两个不同来源入口的时候,因为容易产生并发情况,造成会有脏数据产生,在同事推荐下使用redisson的锁来解决并发问题. 先上使用的一定程度封装的工具类: 工具类 @Service pu ...

  5. Redisson之lock()和tryLock()的区别

    Redisson之lock()和tryLock()的区别和原理解析 在Redisson中 lock() 方法 与 tryLock() 方法是有区别的! 我们先来阐述两者的区别,再分析它们的源码. lo ...

  6. Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法

    Ubuntu中出现"Could not get lock /var/lib/dpkg/lock"的解决方法 参考文章: (1)Ubuntu中出现"Could not ge ...

  7. 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 ...

  8. 记一次MySQL中Waiting for table metadata lock的解决方法

    记一次MySQL中Waiting for table metadata lock的解决方法 参考文章: (1)记一次MySQL中Waiting for table metadata lock的解决方法 ...

  9. Redis - Redisson lock和tryLock原理解析

    Redisson 分布式锁原理 1. 工具类 package com.meta.mall.common.utils;import lombok.extern.slf4j.Slf4j; import o ...

最新文章

  1. 大型软件公司.net面试题!一定得看(附答案)
  2. Spring源码学习笔记1
  3. 【Python学习系列五】Python网络爬虫框架Scrapy环境搭建
  4. 算法练习day5——190322(快排、建堆、调整堆)
  5. SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面...
  6. JavaScript对象中的this属性
  7. python中打乱顺序的函数_numpy.random.shuffle打乱顺序函数的实现
  8. 用友T6打开UFO报表提示登录失败
  9. 乐橙tp1 html调用,乐橙TP1的妙用
  10. 【Unity】UI面板:倒计时器
  11. struct和typedef struct的用法和区别
  12. 中国数字商业核心产业链分布
  13. 【图形学】布林冯BlinnPhong
  14. 线性嵌套实例(三个小实例)
  15. 分词器——ik——分词算法
  16. ubuntu企业微信和微信无法发送和显示图片和截图问题
  17. 解决方案:No space left on device
  18. linux 启用dhcp服务器,linux下DHCP服务器配置
  19. c++语言程序设计教程与实验实验报告,C++程序设计课程设计实验报告—网络五子棋...
  20. [已解决] ‘strncpy‘ output truncated before terminating nul copying?bytes from a string of the same leng

热门文章

  1. 顺时针小球圆周运动Java编程_如何使用CSS实现圆周运动小球的实例
  2. c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改
  3. java中间语言汇编语言_中间语言(IL) | 学步园
  4. mysql xml语句_Mysql语句
  5. php生成不重复时间戳,PHP获取时间戳和微秒数以及生成唯一ID
  6. 聚宽macd底背离_许多散户不知道:MACD月线金叉,MACD月金叉都会带来一波牛市!...
  7. kernal tch 下载 天正_tch kernal.arx
  8. mysql join图解_MySQL中Join算法实现原理分析[多图]
  9. 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
  10. salt 启动mysql_saltsack自动化配置day03:服务部署mysql部署