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相关推荐

  1. Java并发:隐藏线程死锁

    大多数Java程序员熟悉Java线程死锁概念. 它本质上涉及2个线程,它们彼此永远等待. 这种情况通常是平面(同步)或ReentrantLock(读或写)锁排序问题的结果. Found one Jav ...

  2. Java改知能机_Java 面试突击之 Java 并发知识基础 进阶考点全解析

    版权说明:本文内容根据 github 开源项目整理所得 项目地址:https://github.com/Snailclimb/JavaGuide​github.com 一.基础 什么是线程和进程? 何 ...

  3. 构建Java并发模型框架

    2002 年 2 月 22 日 Java的多线程特性为构建高性能的应用提供了极大的方便,但是也带来了不少的麻烦.线程间同步.数据一致性等烦琐的问题需要细心的考虑,一不小心就会出现一些微妙的,难以调试的 ...

  4. Java并发面试,幸亏有点道行,不然又被忽悠了

    2019独角兽企业重金招聘Python工程师标准>>> 前言 面试Java,必然要被问Java内存模型和Java并发开发.我被问到的时候,心里慌得一批,"额,是在<T ...

  5. Java并发 -- JMM

    文章基于jdk1.7,通过学习<Java并发编程的艺术>,对Java内存模型的理解 并发编程模型的两个关键问题 线程之间如何通信 线程之间如何同步 上面所说的线程指的是并发执行的活动实体. ...

  6. java 并发统计_java并发编程|CountDownLatch计数器

    0x01,CountDownLatch介绍 CountDownLatch是一个计数器,作为java并发编程中三个组件之一,这个组件的使用频率还是很多的.这里分享下自己画的java并发编程组件的图,后面 ...

  7. Java并发编程71道面试题及答案

    Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...

  8. Java并发编程有多难?这几个核心技术你掌握了吗?

    本文主要内容索引 1.Java线程 2.线程模型 3.Java线程池 4.Future(各种Future) 5.Fork/Join框架 6.volatile 7.CAS(原子操作) 8.AQS(并发同 ...

  9. Java并发编程73道面试题及答案——稳了

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户 ...

  10. Java并发编程:JMM和volatile关键字

    Java内存模型 随着计算机的CPU的飞速发展,CPU的运算能力已经远远超出了从主内存(运行内存)中读取的数据的能力,为了解决这个问题,CPU厂商设计出了CPU内置高速缓存区.高速缓存区的加入使得CP ...

最新文章

  1. day09_读写分离_组件介绍
  2. 文本预处理的基本方法(分词、词性标注、命名实体识别)
  3. 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题...
  4. oracle 对象管理 01_用户及权限
  5. 永中office属于职称计算机吗,2017职称计算机考试WPS_Office检测练习及答案13-中华考试网...
  6. 小程序已成BAT争锋新战场
  7. centos7 mysql升级漏洞5.7.30
  8. 用户生命周期,从运营到数据的最全攻略在这里
  9. Keras-YOLOV3-tensorflow制作训练自己的数据集
  10. Linux下Esp32micropython开发工具thonny的安装
  11. 好佳居软装十大品牌 软装这些知识我们要知道
  12. #研发解决方案#数据开放实验室:再战即席查询和数据开放
  13. web.xml放在哪个目录下_美术资源标准(文件夹目录篇)
  14. 作为后起之秀的远程控制软件·ToDesk,你安排了没?
  15. java虚拟机垃圾回收被误解的7件事
  16. signature=0cbbef017ab45816d9cb00aab39ea9bf,乳腺癌术后伴发胃非霍奇金淋巴瘤一例报告
  17. my first try _ 网络适配器问题以及解决办法
  18. C语言 在程序中打开网页,模拟鼠标点击、键盘输入
  19. 学计算机去华农好还是广工好,广东工业大学,华南农业大学哪个间学校好
  20. 不用穿越,也能体验百年前的老北京,这个AI修复视频火爆全网

热门文章

  1. vmoptions默认配置_AndroidStudio基本配置
  2. cameraraw面板大小调整_Camera Raw基础操作面板介绍
  3. 三星s8自带测试硬件软件,三星S8手机国行固件开启测试:或支持桌面级操作体验...
  4. c语言智能指针是什么,C ++中的智能指针
  5. 女儿情:对于一段音乐进行频率频谱分析
  6. 解决Mac Pro上IDEA卡顿的问题
  7. java arraylist 构造_Java基础五:构造方法、ArrayList
  8. linux架构接口层教程,在LINUX平台上进行成功实现RIL层功能和框架层应用
  9. 如何用计算机猜数字,杭电2010计算机复试笔试题 2道acm简单题(2010):1.猜数字游戏;2.字符串提取数字并求和;...
  10. android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...