- 博客(3)
- 收藏
- 关注
原创 AQS分析Condition等待队列
AQS是AbstractQueneSynchronizer抽象类 封装了Node节点,Node是AQS的静态内部类,Node节点有两个有参构造方法Node(thread , node){}创建双向链表AQS队列,Node( thread , int waitstatus){}创建的单向链表,等待队列 封装了ConditionObject,CoditionObject是AQS的内部类,实现了Condition接口 包含属性,head(AQS头节点)、tail(AQS尾节点)、state()、exclusiv
2020-05-31 16:44:54 759
原创 基于ReentrantLock分析AQS源码
AQS是什么? AQS是一个FIFO(先进先出)的双向链表结构的阻塞队列,这种结构的特点是每个数据结构,分别指向后继节点和前驱节点。所以双向链表可以从任意一个节点开始很方便的访问前驱和后继。每个 Node 其实是由线程封装,当线程争抢锁失败后会封装成 Node 加入到 ASQ 队列中去;当获取锁的线程释放锁以后,会从队列中唤醒一个阻塞的节点(线程)。 这个阻塞列队如何是如何去抢占锁的? 线程去获取共享资源,先去CAS的原子操作,去获取锁,成功则直接获取锁,进入同步方法块 抢占失败,那么判断是否是同一线程,
2020-05-25 17:27:15 129
原创 代理模式
为什么要用代理模式:保护目标类对象,增强目标类代码的功能 如何增强功能而且又不失去目标类的方法: 静态代理方式:代码编译以前,完成代码功能增强。口述简单示例:目标类实现了一个接口,重写的方法是目标类的主要业务功能,代理类也实现了这个接口,也需要重写这个方法(开动脑筋:如何增强目标类的功能?),代理类里面创建了目标类的对象,然后在代理类重写方法当中调用目标类对象的业务功能(也是接口的重写方法),在代理类重写方法中就有了目标代理类的业务方法了,实现了代理 优点: 代理模式在客户端与目标对象之间起到一个中介作用和
2020-05-11 20:16:18 87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人