Java-并发-LockSynchronized
Sychronized
锁住代码块,执行代码块。
释放锁:
1.获取锁的线程执行完,并释放锁的占有
2.执行发生异常,JVM让线程自动释放锁
缺点:
1.异常只会被抛出,不能被解决,维护系统正常
Lock
public interface Lock{
void lock();//获取锁,锁已被其他线程获取,进行等待
void lockInterruptibly()throws InterruptedException;
boolean tryLock();//success->true;fail->false
boolean tryLock(long time,TimeUnit unit)throws InterruptedException;
void unlock();
Condition newCondition();
}
<lock()>
Lock lock=new ReentrantLock();//ReentrantLock实现了Lock,拥有相同的并发性和内存语义
//有与锁相关的获取计数器,拥有锁的某个线程再次得到锁,+1,e.g.退出第二个synchronized块,不释放锁,退出第一个synchronized块,释放锁
try{
}finally{
lock.unlock();//在finally中,确保锁一定被释放
}
//lock 必须在finally中释放,否则抛出异常
<tryLock()>
boolean captured=lock.tryLock();
try{
}finally{
if(captured)
lock.unlock();
else
.....//未获取到锁
}
<tryLock(long time,TimeUnit)throws InterruptedException;>
try{
boolean captured=tryLock(2,TimeUnit.SECONDS);
}catch(InterrupedException e){
throw new RuntimeException(e);
}
try{
}finally{
if(captured)
lock.unlock();
else
....}
看到了有趣的。。。用于遍历链接列表中的节点的节点传递的加锁机制
///先到这
转载于:https://www.cnblogs.com/HackHer/p/4986904.html
Java-并发-LockSynchronized相关推荐
- Java并发:隐藏线程死锁
大多数Java程序员熟悉Java线程死锁概念. 它本质上涉及2个线程,它们彼此永远等待. 这种情况通常是平面(同步)或ReentrantLock(读或写)锁排序问题的结果. Found one Jav ...
- Java改知能机_Java 面试突击之 Java 并发知识基础 进阶考点全解析
版权说明:本文内容根据 github 开源项目整理所得 项目地址:https://github.com/Snailclimb/JavaGuidegithub.com 一.基础 什么是线程和进程? 何 ...
- 构建Java并发模型框架
2002 年 2 月 22 日 Java的多线程特性为构建高性能的应用提供了极大的方便,但是也带来了不少的麻烦.线程间同步.数据一致性等烦琐的问题需要细心的考虑,一不小心就会出现一些微妙的,难以调试的 ...
- Java并发面试,幸亏有点道行,不然又被忽悠了
2019独角兽企业重金招聘Python工程师标准>>> 前言 面试Java,必然要被问Java内存模型和Java并发开发.我被问到的时候,心里慌得一批,"额,是在<T ...
- Java并发 -- JMM
文章基于jdk1.7,通过学习<Java并发编程的艺术>,对Java内存模型的理解 并发编程模型的两个关键问题 线程之间如何通信 线程之间如何同步 上面所说的线程指的是并发执行的活动实体. ...
- java 并发统计_java并发编程|CountDownLatch计数器
0x01,CountDownLatch介绍 CountDownLatch是一个计数器,作为java并发编程中三个组件之一,这个组件的使用频率还是很多的.这里分享下自己画的java并发编程组件的图,后面 ...
- Java并发编程71道面试题及答案
Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...
- Java并发编程有多难?这几个核心技术你掌握了吗?
本文主要内容索引 1.Java线程 2.线程模型 3.Java线程池 4.Future(各种Future) 5.Fork/Join框架 6.volatile 7.CAS(原子操作) 8.AQS(并发同 ...
- Java并发编程73道面试题及答案——稳了
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户 ...
- Java并发编程:JMM和volatile关键字
Java内存模型 随着计算机的CPU的飞速发展,CPU的运算能力已经远远超出了从主内存(运行内存)中读取的数据的能力,为了解决这个问题,CPU厂商设计出了CPU内置高速缓存区.高速缓存区的加入使得CP ...
最新文章
- day09_读写分离_组件介绍
- 文本预处理的基本方法(分词、词性标注、命名实体识别)
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题...
- oracle 对象管理 01_用户及权限
- 永中office属于职称计算机吗,2017职称计算机考试WPS_Office检测练习及答案13-中华考试网...
- 小程序已成BAT争锋新战场
- centos7 mysql升级漏洞5.7.30
- 用户生命周期,从运营到数据的最全攻略在这里
- Keras-YOLOV3-tensorflow制作训练自己的数据集
- Linux下Esp32micropython开发工具thonny的安装
- 好佳居软装十大品牌 软装这些知识我们要知道
- #研发解决方案#数据开放实验室:再战即席查询和数据开放
- web.xml放在哪个目录下_美术资源标准(文件夹目录篇)
- 作为后起之秀的远程控制软件·ToDesk,你安排了没?
- java虚拟机垃圾回收被误解的7件事
- signature=0cbbef017ab45816d9cb00aab39ea9bf,乳腺癌术后伴发胃非霍奇金淋巴瘤一例报告
- my first try _ 网络适配器问题以及解决办法
- C语言 在程序中打开网页,模拟鼠标点击、键盘输入
- 学计算机去华农好还是广工好,广东工业大学,华南农业大学哪个间学校好
- 不用穿越,也能体验百年前的老北京,这个AI修复视频火爆全网
热门文章
- vmoptions默认配置_AndroidStudio基本配置
- cameraraw面板大小调整_Camera Raw基础操作面板介绍
- 三星s8自带测试硬件软件,三星S8手机国行固件开启测试:或支持桌面级操作体验...
- c语言智能指针是什么,C ++中的智能指针
- 女儿情:对于一段音乐进行频率频谱分析
- 解决Mac Pro上IDEA卡顿的问题
- java arraylist 构造_Java基础五:构造方法、ArrayList
- linux架构接口层教程,在LINUX平台上进行成功实现RIL层功能和框架层应用
- 如何用计算机猜数字,杭电2010计算机复试笔试题 2道acm简单题(2010):1.猜数字游戏;2.字符串提取数字并求和;...
- android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...