lockInterruptibly()

  • lockInterruptibly():相当于tryLock(long time, TimeUnit unit)把超时时间设置为无限,在等待锁的过程中,线程可以被中断

unlock()

  • unlock():解锁
package lock.lock;import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class LockInterruptibly implements Runnable {private Lock lock = new ReentrantLock();
public static void main(String[] args) {LockInterruptibly lockInterruptibly = new LockInterruptibly();Thread thread0 = new Thread(lockInterruptibly);Thread thread1 = new Thread(lockInterruptibly);thread0.start();thread1.start();try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}thread1.interrupt();
}@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + "尝试获取锁");try {lock.lockInterruptibly();try {System.out.println(Thread.currentThread().getName() + "获取到了锁");Thread.sleep(5000);} catch (InterruptedException e) {System.out.println(Thread.currentThread().getName() + "睡眠期间被中断了");} finally {lock.unlock();System.out.println(Thread.currentThread().getName() + "释放了锁");}} catch (InterruptedException e) {System.out.println(Thread.currentThread().getName() + "获得锁期间被中断了");}}
}

代码演示:获取锁时被中断相关推荐

  1. java 内存情况_Java代码中获取运行时内存情况

    在此之前,还是先看下JVM内存结构和JVM参数调优,网上太多不说也罢. 另外提醒的是方法反映的都是java这个进程的内存情况,跟操作系统的内存根本没有关系. public class Test { p ...

  2. java 中lock,java中lock获取锁的四种方法

    在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...

  3. linux为什么要禁止内核抢占,为什么linux在内核代码持有自旋锁后禁用内核抢占?...

    我是 Linux的新手,正在阅读Rubini& amp;的Linux设备驱动程序.科比特.我对一个与自旋锁相关的陈述感到困惑;这本书说明 If a nonpreemptive uniproce ...

  4. 锁-概念:可重入锁、可中断锁、公平锁、读写锁

    可重入锁 指的是在同一个thread中,获取锁之后再次使用同样的方法或对象中的其他方法可以直接操作,而不需要重新获取锁.它是基于thread粒度的,per-thread. 不可重入锁 指的是每次使用锁 ...

  5. Lock锁及获取锁的四种方法

    为什么使用LOCK? LOCK锁 LOCK锁的上锁与解锁 为什么使用LOCK? 传统的Synchronized锁有非常多的缺点: 锁的唤醒和阻塞代价较高,线程的阻塞和唤醒,操作系统需要在用户态与内核态 ...

  6. java request获取内容_JavaWeb - Http请求消息 - Request获取请求消息(基础)代码演示 - 小黑电脑...

    Http 概念:Hyper Text Transfer Protocol 超文本传输协议 传输协议 : 定义了,客户端和服务器端通信时,发送数据的格式 特点: 基于TCP/IP的高级协议 默认端口号: ...

  7. java在linux转化mp3,linux下微信/qq的aud、silk音频文件格式与mp3格式互转,获取音频时长的方法,附问题分析和java代码。...

    安装ffmpeg ffmpeg -codecs -可以看出ffmpeg默认的MP3格式无法编码为其它格式[D.A.L mp3]D=解码 E=编码 A=AudioCodec L=有损压缩 需要安装lam ...

  8. linux下微信/qq的aud、silk音频文件格式与mp3格式互转,获取音频时长的方法,附问题分析和java代码。

    安装ffmpeg ffmpeg -codecs -可以看出ffmpeg默认的MP3格式无法编码为其它格式[D.A.L mp3]D=解码 E=编码 A=AudioCodec L=有损压缩 需要安装lam ...

  9. Python 获取视频时长(附代码) | Python工具

    目录 前言 环境依赖 代码 总结 前言 本文提供获取视频时长的python代码,精确到毫秒,一如既往的实用主义. 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安 ...

最新文章

  1. 彻底理解 Cookie,Session,Token
  2. sql镶嵌查询_sql数据库的嵌套查询
  3. java char判断相等_【Java面试考点4】java基础之运算符
  4. php粒子背景特效_粒子背景特效Particleground.js插件使用解析_蓝戒的博客
  5. sklearn自学指南(part50)--独立成分分析(ICA)
  6. 神经网络- receptive field
  7. linux查看允许创建多少个进程,Linux下查看某个进程创建了多少线程
  8. 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
  9. spring集成redis cluster
  10. python兼职程序员工资-没想到,学会Python即使不做程序员都能月入过万!
  11. 数字转字符串的精度问题
  12. javascript高级程序设计pdf(JavaScript高级程序设计PDF版)
  13. 让生活服务“说到做到”,美团语音应用平台的底气在哪里?
  14. NetSuite 财务科目合并
  15. C# chart画折线
  16. 【企业安全实战】开源HIDS OSSEC部署与扩展使用
  17. 猿圈 题库_百度传课携手猿圈 接入题库及测评服务
  18. 按键精灵html代码,按键精灵代码post和get
  19. Nginx的配置与优化
  20. additional-methods.js 用法

热门文章

  1. 44 个 JavaScript 变态题解析
  2. 卡特兰数 BZOJ3907 网格 NOIP2003 栈
  3. C# 版本设计模式(Design Pattern)---------------总序
  4. awstats 简单日志分析
  5. 关于wordpress中更换CKEditor编辑器
  6. mina 粘包、多包和少包的解决方法
  7. InstallShield安装打包编译自动化(3)- 更新Package GUID,Product GUID以及Upgrade GUID
  8. VirtualBox 安装失败的主要原因 不是正版的OS,系统主题需要还原
  9. prometheus + influxdb + grafana + mysql
  10. 3.1集合相关知识点