自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 深入AQS

整个分析过程遵循:先了解结构,循序渐进,然后将各部分内容串起来。 通过lock接口一步一步引入AQS,了解AQS。 lock接口的出现原因: ·使用synchronized关键字将会隐式地获取锁,释放锁。整个行为都是隐式进行,不需要干预,所以不灵活 ·获取到锁的线程没办法相应中断,线程被中断后抛出中断异常释放锁。 ·没办法指定获取锁的超时时间 ·....................

2019-05-20 18:09:03 180

原创 Java中解决可见性采取的方案

可见性的由来 由于CPU、内存、IO设备这三者性能是相差很大的。 如果CPU要等待内存,那么就很浪费CPU资源,利用率就很低。 所以为了平衡他们之间的差异,最大化的利用CPU资源做出如下努力: 1、高速缓存(引来了缓存不一致问题--》CPU层面的解决方法(1、总线锁(性能影响) 2、缓存锁(降低锁的粒度来提高性能)(实现:通过缓存一致性协议))) 2、线程和进程(CPU时间片的切...

2019-05-19 01:37:48 810

原创 wait-notify/notifyAll

先说例子,再说原理。 等待/通知机制:在某个条件下等待,当条件满足时,通过它结束等待,继续执行。 简单实现: 等待方: public class Waiter { public static volatile int flag = 0; public static void setFlag(int flag) { Waiter.flag = ...

2019-05-18 19:01:10 444

原创 synchronized

synchronized修饰在实例方法、静态方法,代码块上的区别: 1、修饰在实例方法上使用的锁是:this(也就是当前对象的对象头) 修饰在静态方法上使用的锁是:类的class(类加载后存储在方法区中的class对象的对象头) 2、如果使用的是this对象:只有当多个线程使用的是同一个对象时,才可以保证线程安全。 反例:这两个用的不是同一个锁。 publiccla...

2019-05-18 15:39:20 117

原创 Java数据结构-数组

基础知识: 1、HotSpot虚拟机中,如果对象是一个Java数组,那在对象头中会保存一块用于记录数据长度的数据,从数组的元数据中无法确定数组的大小。 2、对象的内存布局:对象头,实例数据,填充 数组: 对于一个原始类型的数组,一般需要24字节的头信息再加上保存值所需要的内容。 24字节的头信息分别包含:1、对象开销 --16字节2、用于保存长度 --4字节3、填充字...

2019-05-18 11:38:06 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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