• 使用tryLock进行尝试锁定,不管锁定与否,方法都将继续执行
  • 可以根据tryLock的返回值来判定是否锁定
  • 也可以指定tryLock的时间,由于tryLock(time)抛出异常,所以要注意unclock的处理,必须放到finally中
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class T03_ReentrantLock3 {Lock lock = new ReentrantLock();void m1() {try {lock.lock();for (int i = 0; i < 3; i++) {TimeUnit.SECONDS.sleep(1);System.out.println(i);}} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}/*** 使用tryLock进行尝试锁定,不管锁定与否,方法都将继续执行* 可以根据tryLock的返回值来判定是否锁定* 也可以指定tryLock的时间,由于tryLock(time)抛出异常,所以要注意unclock的处理,必须放到finally中*/void m2() {/*boolean locked = lock.tryLock();System.out.println("m2 ..." + locked);if(locked) lock.unlock();*/boolean locked = false;try {locked = lock.tryLock(5, TimeUnit.SECONDS);System.out.println("m2 ..." + locked);} catch (InterruptedException e) {e.printStackTrace();} finally {if(locked) lock.unlock();}}public static void main(String[] args) {T03_ReentrantLock3 rl = new T03_ReentrantLock3();new Thread(rl::m1).start();try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}new Thread(rl::m2).start();}
}

【代码】ReentrantLock使用tryLock进行尝试锁定相关推荐

  1. 开发者70行代码破解苹果OSX远程锁定安全功能

    苹果的 Mac OS X 有一项"Find My Mac"的防盗功能,开启这项功能后用户可以通过自己的 iOS 鼠标远程锁定 Mac 机器,只有输入正确的 4 位 PIN 后才能对 ...

  2. Redisson(2-1)分布式锁实现对比 VS Java的ReentrantLock之tryLock

    Redisson实现了一整套JDK中ReentrantLock的功能,这里对比一下实现的差异和核心的思想. unfair模式的tryLock ReentrantLock ①判断当前的state是否是0 ...

  3. Java 多线程 —— ReentrantLock 与 Condition

    引言 ReentrantLock 是 JUC 下的一个功能强劲的锁工具,支持公平锁.非公平锁,以及多等待队列的 Condition . 也常常被称为"手动锁".本篇博客主要分析它的 ...

  4. future.cancel不能关闭线程_多线程与高并发笔记

    1. 创建线程的四种方式 实现Runnable 重写run方法 继承Thread 重写run方法 线程池创建 Executors.newCachedThreadPool() 实现Callable接口 ...

  5. Java高并发编程 (马士兵老师视频)笔记(一)同步器

    本篇主要总结同步器的相关例子:包括synchronized.volatile.原子变量类(AtomicXxx).CountDownLatch.ReentrantLock和ThreadLocal.还涉及 ...

  6. 多线程与高并发实战第八节

    Atomic类和线程同步新机制 像原来我们写m++你得加锁,在多线程访问的情况下,那现在我们可以用AtomicInteger了,它内部就已经帮我们实现了原子操作,直接写 count.increment ...

  7. 各种JUC同步框架的使用

    常用的JUC同步技术主要有以下几个: ReentrantLock 它与synchronized一样,也是可重入锁,可以完全替代synchronized,什么叫可重入,意思就是我锁了一下还可以对同样这把 ...

  8. 多线程与高并发(四)

    Atomic类和线程同步新机制 文章目录 Atomic类和线程同步新机制 并发情况下实习自增的几种方式 ReentrantLock CountDownLatch CyclicBarrier Phase ...

  9. 多线程——零散知识补充

    ReentrantLock reentrantlock用于替代synchronized,使用reentrantlock可以完成synchronized同样的功能,但需要注意的是,必须要必须要必须要手动 ...

最新文章

  1. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明
  2. 【蓝桥java】进制与整除之最大公约数 最小公倍数
  3. 【C++基础学习】C++中的引用
  4. 军规13 降低流量和电量消耗
  5. 【SpringCloud】简介及其核心组件详解
  6. android.database.cursorindexoutofboundsexception错误解决 及获取某行某列信息
  7. hive脚本执行方式
  8. 闭包总结(2018.03.19)
  9. android多点触控自由对图片缩放
  10. PWM实现语音播放原理
  11. 一次失败的蛋疼的设计
  12. 录入成绩编程平均java_java 学习第二天小练习
  13. 《给你一个团队,你能怎么管?》读书笔记
  14. Atitit 类库冲突解决方案  httpclient-4.5.2.jar
  15. Discuz代码分析:getgpc($k, $t='GP')获取超全局数组值
  16. 02时态(2):一般现在时、疑问句主语相同的句子
  17. Android studio 中使用GeenDao
  18. 模具怎么报价?快速报价的计算方法
  19. shp文件中polyline是什么_polyline怎么读用法大全_polyline是什么意思
  20. 花粉的基本功效(收藏)

热门文章

  1. 【NLP】一文速览 | 对话生成预训练模型
  2. 我的华为P30pro手机升级了鸿蒙系统!
  3. 应届生是这辈子最大的一次优势,也是最后一次!
  4. 【NLP】Transformer模型深度解读
  5. 用Dropout思想做特征选择,保证效果还兼顾了线上性能?
  6. 0318互联网新闻 | Snapchat下月进军游戏平台;阿里巴巴将上线二哈智能防骚扰电话的应用程序...
  7. 互联网1分钟 |1114
  8. C++ 是 编程界 的 背锅侠
  9. 【资料下载】Python 第三讲——正则表达式爬取糗事百科数据...
  10. 为终端服务连接配置网络级身份验证