摘要: 1.Condition介绍 Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object 阅读全文
posted @ 2017-05-31 10:27 jiguojing 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 非公平锁之获取锁 非公平锁和公平锁在获取锁的方法上,流程是一样的;它们的区别主要表现在“尝试获取锁的机制不同”。简单点说,“公平锁”在每次尝试获取锁时,都是采用公平策略(根据等待队列依次排序等待);而“非公平锁”在每次尝试获取锁时,都是采用的非公平策略(无视等待队列,直接尝试获取锁,如果锁是空闲的, 阅读全文
posted @ 2017-05-31 09:28 jiguojing 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 释放公平锁 1.unlock() unlock()在ReentrantLock.java中实现的,源码如下: 说明:unlock()是解锁函数,它是通过AQS的release()函数来实现的。在这里,“1”的含义和“获取锁的函数acquire(1)的含义”一样,它是设置“释放锁的状态”的参数。由于“ 阅读全文
posted @ 2017-05-31 08:23 jiguojing 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 基本概念 1.AQS:AbstractQueuedSynchronizer类 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。 (01) 独占锁 -- 锁在一个时间点只能被一个 阅读全文
posted @ 2017-05-31 08:10 jiguojing 阅读(470) 评论(0) 推荐(0) 编辑