synchornized reentrant lock

原创 2016年08月21日 18:11:49

synchornized

那么为什么 开发 java.util.concurrent.lock 框架呢?答案很简单-同步是不错,但它并不完美。它有一些功能性的限制 —— 它无法中断一个正在等候获得锁的线程,也无法通过投票得到锁,如果不想等下去,也就没法得到锁。同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行,多数情况下,这没问题(而且与异常处理交互得很好),但是,确实存在一些非块结构的锁定更合适的情况。

reentrant lock

java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的性能。(换句话说,当许多线程都想访问共享资源时,JVM 可以花更少的时候来调度线程,把更多时间用在执行线程上。)

reentrant 锁意味着什么呢?

简单来说,它有一个与锁相关的获取计数器,如果拥有锁的某个线程再次得到锁,那么获取计数器就加1,然后锁需要被释放两次才能获得真正释放。这模仿了 synchronized 的语义;如果线程进入由线程已经拥有的监控器保护的 synchronized 块,就允许线程继续进行,当线程退出第二个(或者后续) synchronized 块的时候,不释放锁,只有线程退出它进入的监控器保护的第一个 synchronized 块时,才释放锁。


快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

相关文章推荐

Java 多线程并发编程之互斥锁 Reentrant Lock

Java 中的锁通常分为两种: 通过关键字 synchronized 获取的锁,我们称为同步锁。java.util.concurrent(JUC)包里的锁,如通过继承接口 Lock 而实现的 R...
  • lddroid
  • lddroid
  • 2017年06月17日 17:11
  • 75

curator 锁之 Shared Reentrant Lock

1、描述 共享锁:全局同步分布式锁,同一时间两台机器只能有一台获得锁 2、参与类 InterProcessMutex 3、用法 3.1 创建 InterProcessMute...
  • klov001
  • klov001
  • 2015年01月10日 20:37
  • 1720

java多线程之synchornized原理以及原子操作探究学习

synchornized 实现原理再JAVA1.6对synchronized进行优化后,能够减少获得锁和释放锁带来的性能消耗,主要是引入了偏向锁和轻量级锁。还有优化了锁的存储结构和升级结构。再jvm规...
  • quuqu
  • quuqu
  • 2017年06月01日 19:09
  • 258

java并发编程实践--原子变量、volatile、synchornized

volatile是一种同步的弱形式,volatile变量,它可以确保当一个变量的更新对其他线程的可见性,即修改一个volatile变量时,其他线程是可以获取到修改后的新值。当一个域被声明为volati...

c51 reentrant 关键字,用法的一点理解,欢迎板砖!

/* 单片机分 端口映射 和 内存映射 51 为端口映射 但亦可以扩展为内存映射 那样就是混合映射 大部分的非51 cpu为内存映射 端口映射的CPU需要对c语言进行扩展,扩展端口映射语句,s...
  • helezh
  • helezh
  • 2014年09月12日 09:44
  • 1397

reentrant(可重入)函数与thread safe(线程安全)函数的区别

reentrant函数与是不是多线程无关,如果是reentrant函数,那么要求即使是同一个进程(或线程)同时多次进入该函数时,该函数 仍能够正确的运作.该要求还蕴含着,如果是在多线程环境中,不同的...
  • TODD911
  • TODD911
  • 2014年09月10日 16:27
  • 927

Reentrant vs Thread-safe

Reentrant vs Thread-safe a whole copy of MagicJackTing's blog. thanks ot his sharing. Reentrancy 和...
  • flxue
  • flxue
  • 2016年06月29日 11:40
  • 276

thread safe vs reentrant

Reentrant is an adjective that describes a computer program or routine that is written so that the...
  • tgb1989
  • tgb1989
  • 2014年04月23日 11:21
  • 552

reentrant函数与thread safe函数浅析

reentrant函数与thread safe函数浅析 http://www.chinaunix.net 作者:ypxing 发表于:2008-02-23 19:46:50 ...

Lock Screen test upload

  • 2016年02月16日 19:16
  • 8.95MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:synchornized reentrant lock
举报原因:
原因补充:

(最多只允许输入30个字)