摘要:
java中的类加载器:bootstrap,ExtClassLoader,AppClassLoaderbootstrap 使用c++编写sun.misc.Launcher.ExtClassLoadersun.misc.Launcher.AppClassLoader 继承关系: ClassLoader 阅读全文
摘要:
javassist的作用是动态生成字节码。 dubbo中的JavassistCompiler和JavassistProxyFactory使用了javassist包生成class文件。 阅读全文
摘要:
HeaderExchangeClient 注释是DefaultMessageClient,类中定义了心跳定时器HeaderExchangeChannel 发送请求HeaderExchangeHandler provider中处理请求,consumer中处理响应 创建HeaderExchangeCli 阅读全文
摘要:
HeartBeatTask 类封装了心跳定时任务,需要了解的是 provider 和 consumer 都有可能发送心跳。 对于 consumer,是在 HeaderExchangeClient 类中启动心跳定时器,而 provider,则是在 HeaderExchangeServer 中启动心跳定 阅读全文
摘要:
先来一个InvocationHandler示例,InvocationHandler类的作用是:对原始对象的方法做一个拦截。 dubbo consumer的InvokerInvocationHandler实现了InvocationHandler接口,拦截的是MockClusterInvoker对象的方 阅读全文
摘要:
ReferenceConfig.init()方法中获取到了最终的代理对象,先观察一下代理对象的视图。 默认使用javassist生成动态类,可配置proxy为jdk,则使用jdk动态代理: jdk代理对象视图如下图: RegistryDirectory中有一个 urlInvokerMap。 示例: 阅读全文
摘要:
从代码示例观察Thread相关的性质: 1. wait和notify: 2. join 3. interrupt Thread.interrupt 方法只是置标志位 interrupt status 为 true 如果线程的 interrupt status 为 true,则调用 sleep 会置 阅读全文
摘要:
使用示例: SynchronousQueue的put和take是阻塞的,一个线程put,然后阻塞,等待另一个线程take;或者一个线程take,然后阻塞,等待另一个线程put。 阻塞线程: 唤醒线程: Executors.newCachedThreadPool使用的队列是SynchronousQue 阅读全文
摘要:
Executors 类对 ThreadPoolExecutor 的构造函数进行了封装,使用该类可方便地创建线程池。 1. newFixedThreadPool 2. newCachedThreadPool 分析任务入队和出队,分别对应 ThreadPoolExecutor 类的 execute 方法 阅读全文
摘要:
1. 在Breakpoints页面,选中断点然后右键,选择"Breakpoint Properties" 2. 勾选Conditional,并输入条件。这样,当name等于"dubbo"时,就会暂停。 阅读全文