目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两 ...
分类:
其他好文 时间:
2017-06-13 21:45:11
阅读次数:
214
可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁。 下面是使用实例: 两个例子最后的结果都是正确的,即 同一个线程id被连续输出两次。 结果如下: Th ...
分类:
其他好文 时间:
2017-06-09 23:41:11
阅读次数:
215
基本概念 1.AQS:AbstractQueuedSynchronizer类 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。 (01) 独占锁 -- 锁在一个时间点只能被一个 ...
分类:
编程语言 时间:
2017-05-31 10:29:13
阅读次数:
193
什么是可重入锁,不可重入锁呢?"重入"字面意思已经非常明显了,就是能够又一次进入。可重入锁,就是说一个线程在 获取某个锁后,还能够继续获取该锁,即同意一个线程多次获取同一个锁。比方synchronized内置锁就是可重入的 ,假设A类有2个synchornized方法method1和method2, ...
分类:
其他好文 时间:
2017-05-19 18:33:20
阅读次数:
97
Synchronized 与Lock都是可重入锁,同一个线程再次进入同步代码的时候.可以使用自己已经获取到的锁。 Synchronized是悲观锁机制,独占锁。而Locks.ReentrantLock是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。 Reentr ...
分类:
其他好文 时间:
2017-04-25 14:58:01
阅读次数:
392
此篇博客所有源码均来自JDK 1.8
ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchro...
分类:
编程语言 时间:
2017-03-26 22:17:56
阅读次数:
215
1.1. 可重入锁ReentrantLock ReentrantLock是java并发库中提供的可重入锁。与synchronized同步块相比,有相似也有不同。相似的地方有: (1)都可以实现多线程之间的同步,避免对共享资源的访问冲突。 (2)都是可重入的,即一个已经获取锁的线程可以再次获得同一个锁 ...
分类:
编程语言 时间:
2017-03-24 21:44:57
阅读次数:
195
锁的简单应用 用lock来保证原子性(this.count++这段代码称为临界区) 什么是原子性,就是不可分,从头执行到尾,不能被其他线程同时执行。 可通过CAS来实现原子操作 CAS(Compare and Swap): CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间 ...
分类:
其他好文 时间:
2017-03-19 17:05:24
阅读次数:
290
锁,同步,可重入锁,读写锁(转) 1、synchronized 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。 1.1 原子性 原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monit ...
分类:
其他好文 时间:
2017-02-19 21:41:22
阅读次数:
223
1.可重入锁 如果锁具备可重入性,则称作为可重入锁。 (转)可重入和不可重入 2011-10-04 21:38 这种情况出现在多任务系统当中,在任务执行期间捕捉到信号并对其进行处理时,进程正在执行的指令序列就被信号处理程序临时中断。如果从信号处理程序返回,则继续执行进程断点处的正常指令序列,从重新恢 ...
分类:
其他好文 时间:
2017-01-03 11:43:01
阅读次数:
273