上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要:服务消费者初始化过程,即生成RefrenceBean的过程 整体执行流程 备注:Dubbo 默认使用 Javassist 框架为服务接口生成动态代理类,可以使用使用阿里开源 Java 应用诊断工具 Arthas 反编译代理类 Dubbo官网提供的时序图 一、RefrenceBean生成过程 Refr 阅读全文
posted @ 2020-06-16 12:07 cao_xiaobo 阅读(335) 评论(0) 推荐(0) 编辑
摘要:一、定义 ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进ThreadLocal。 概括 阅读全文
posted @ 2020-06-16 11:46 cao_xiaobo 阅读(80) 评论(0) 推荐(0) 编辑
摘要:对象的内存分配,从大方向上将,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况也可能直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃 阅读全文
posted @ 2020-06-16 11:26 cao_xiaobo 阅读(251) 评论(0) 推荐(0) 编辑
摘要:一、Java堆内存结构 JVM将堆分成了二个大区新生代(Young)和老年代(Old),新生代又被进一步划分为Eden(伊甸园空间)和Survivor(幸存者空间)区,而Survivor由Survivor1和Survivor2组成,也有些人喜欢用FromSpace和ToSpace来代替。这里为什么要 阅读全文
posted @ 2020-06-16 11:13 cao_xiaobo 阅读(187) 评论(0) 推荐(0) 编辑
摘要:concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS框架借助于两个类: Unsafe(提供CAS操作) LockSupport(提供park/unpark操作,底层仍然调用是Unsafe类的park/unpark方法) 因此,LockSuppor 阅读全文
posted @ 2020-06-16 10:31 cao_xiaobo 阅读(70) 评论(0) 推荐(0) 编辑
摘要:前言 摘自《深入理解Java虚拟机》一书 互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力。而在很多应用上,共享数据的锁定状态只会持续很短的一段时间。若实体机上有多个处理器,能让两个以上的线程同时并行执行,我们就可以让后面 阅读全文
posted @ 2020-06-16 10:24 cao_xiaobo 阅读(127) 评论(0) 推荐(0) 编辑
摘要:CAS(Compare And Swap) 比较并交换 前言 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。锁机制存在以下问题: 在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 一个线程持有锁会导致其它所有需要此锁的线程挂起。 阅读全文
posted @ 2020-06-16 10:13 cao_xiaobo 阅读(95) 评论(0) 推荐(0) 编辑
摘要:一、synchronized 的原理 JVM 基于进入和推出Monitor对象来实现方法和同步代码块,但两者的实现细节不同。 synchronize 修饰的同步代码块:使用monitorenter 和 monitorexit 指令实现; synchronize 修饰的方法并没有 monitorent 阅读全文
posted @ 2020-06-16 09:07 cao_xiaobo 阅读(221) 评论(0) 推荐(0) 编辑
摘要:锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁。JDK 1.6中默认是开启偏向锁和轻量级锁的,我们也可以通过-XX:-UseBiasedLocking来禁用偏向锁。锁的状态保存在对象的头文件中,以32位的JDK为例。 每个对象一 阅读全文
posted @ 2020-06-16 08:54 cao_xiaobo 阅读(130) 评论(0) 推荐(0) 编辑
摘要:一、循环依赖产生的原因 A依赖B,B又依赖A @Component class A { @Autowired B b; } @Component class B { @Autowired A a; } A类Bean创建过程: 先实例化A,(一般都是)通过无参构造完成实例化; A属性注入,发现A依赖B 阅读全文
posted @ 2020-05-10 13:05 cao_xiaobo 阅读(326) 评论(1) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页