自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除