<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[waiting]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/waitme8888</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; waitme8888]]></copyright><item><title><![CDATA[ReentrantLock源码分析]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/81979793</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/81979793</guid><author>waitme8888</author><pubDate>Thu, 23 Aug 2018 16:31:45 +0800</pubDate><description><![CDATA[继承Lock接口

方法
			说明
		void lock()
			获取锁。如果锁被占用，那么当前线程阻塞，直到锁被获取。
		void lockInterruptibly()
			获取锁，同lock方法，支持线程中断响应。
		boolean tryLock()
			获取锁时，如果没有被其他线程占用立即返回true，否则返回false。
		boolean tryLock(long ti...]]></description><category></category></item><item><title><![CDATA[AbstractQueuedSynchronizer源码分析]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/81871284</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/81871284</guid><author>waitme8888</author><pubDate>Tue, 21 Aug 2018 14:55:50 +0800</pubDate><description><![CDATA[java中的Lock、ReadWriteLock、CountDownLatch等工具类都是基于AbstractQueuedSynchronizer实现，而AbstractQueuedSynchronizer中线程的阻塞和唤醒又依靠LockSupport实现。

AbstractQueuedSynchronizer继承AbstractOwnableSynchronizer实现排他性和可重入判断。

...]]></description><category></category></item><item><title><![CDATA[LockSupport源码分析]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/64918461</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/64918461</guid><author>waitme8888</author><pubDate>Mon, 20 Aug 2018 11:18:22 +0800</pubDate><description><![CDATA[LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。

每个使用LockSupport的线程都会与一个许可关联，如果该许可可用，并且可在进程中使用，则调用park()将会立即返回，否则可能阻塞。如果许可尚不可用，则可以调用 unpark 使其可用。但是注意许可不可重入，也就是说只能调用一次park()方法，否则会一直阻塞。（功能类似于Semaphore类，最多有一个许可证）

Loc...]]></description><category></category></item><item><title><![CDATA[java引用类型分析]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/80902880</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/80902880</guid><author>waitme8888</author><pubDate>Thu, 05 Jul 2018 11:24:51 +0800</pubDate><description><![CDATA[java的几种引用类型如下，其中]]></description><category></category></item><item><title><![CDATA[Spring源码分析（五）]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/80842273</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/80842273</guid><author>waitme8888</author><pubDate>Mon, 02 Jul 2018 15:59:06 +0800</pubDate><description><![CDATA[spring事务：编程式事务管理、声明式事务管理重点说明下声明式事务管理，无侵入性，aop实现]]></description><category></category></item><item><title><![CDATA[java动态代理Proxy类详解]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/80222735</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/80222735</guid><author>waitme8888</author><pubDate>Mon, 07 May 2018 16:38:57 +0800</pubDate><description><![CDATA[通过Prox类的注释可知，实现动态代理两种方式。1、生成代理类，利用反射得到代理对象public class Test {

    public static interface Foo {
        void test();
    }

    public static class MyInvocationHandler implements InvocationHandler {
...]]></description><category></category></item><item><title><![CDATA[Spring源码分析（四）]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/80184877</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/80184877</guid><author>waitme8888</author><pubDate>Fri, 04 May 2018 11:46:36 +0800</pubDate><description><![CDATA[通过源码分析，spring aop是通过代理模式方式实现的。配置上主要有两种方式：1、aspectaspect 由 pointcut 和 advice 组成，Spring AOP就是负责实施切面的框架, 它将切面所定义的横切逻辑（advice）织入（weave）到切面所指定的连接点中（joinpoint）。advice：定义增强方法，before、after、around、after-return...]]></description><category></category></item><item><title><![CDATA[Spring源码分析（三）]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/80007972</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/80007972</guid><author>waitme8888</author><pubDate>Thu, 19 Apr 2018 19:29:32 +0800</pubDate><description><![CDATA[spring创建bean实例是通过BeanFactory的getBean方法实现创建bean实例有四种方式1、直接创建bean2、继承FactoryBean，通过getObject方法创建3、创建工厂bean，指明创建实例的静态方法（factory-method，static方法）4、创建工厂bean，指明创建实例的bean和方法,不是静态方法（factory-bean、factory-metho...]]></description><category></category></item><item><title><![CDATA[BeanFactoryPostProcessor和BeanPostProcessor的调用时点]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/79878689</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/79878689</guid><author>waitme8888</author><pubDate>Tue, 10 Apr 2018 15:25:02 +0800</pubDate><description><![CDATA[BeanFactoryPostProcessor和BeanPostProcessor的调用时点]]></description><category></category></item><item><title><![CDATA[Spring源码分析（二）]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/79851619</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/79851619</guid><author>waitme8888</author><pubDate>Mon, 09 Apr 2018 15:02:10 +0800</pubDate><description><![CDATA[针对spring中bean初始化时扩展类执行顺序进行分析

通过getBean逐层最终到bean实例化前后调用的方法，主要是Aware接口、BeanPostProcessor、InitializingBean、init-method的调用顺序

AbstractBeanFactory#doGetBean-&amp;gt;AbstractAutowireCapableBeanFactory#createBe...]]></description><category></category></item><item><title><![CDATA[Java Type类型详解]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/76261459</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/76261459</guid><author>waitme8888</author><pubDate>Fri, 28 Jul 2017 15:21:18 +0800</pubDate><description><![CDATA[java type类型]]></description><category></category></item><item><title><![CDATA[Spring源码分析（一）]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/68064048</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/68064048</guid><author>waitme8888</author><pubDate>Wed, 29 Mar 2017 13:48:33 +0800</pubDate><description><![CDATA[web应用加载spring容器时，通过web.xml定义监听ContextLoaderListener完成。它继承ServletContextListener实现启动、关闭。启动方法ContextInitialized	public void contextInitialized(ServletContextEvent event) {
		this.contextLoader = createC...]]></description><category></category></item><item><title><![CDATA[LinkedBlockingQueue源码分析]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/64124971</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/64124971</guid><author>waitme8888</author><pubDate>Mon, 20 Mar 2017 14:13:57 +0800</pubDate><description><![CDATA[LinkedBlockingQueue源码分析
队列的特点]]></description><category></category></item><item><title><![CDATA[ThreadLocal源码分析]]></title><link>https://blog.youkuaiyun.com/waitme8888/article/details/62892976</link><guid>https://blog.youkuaiyun.com/waitme8888/article/details/62892976</guid><author>waitme8888</author><pubDate>Fri, 17 Mar 2017 17:50:15 +0800</pubDate><description><![CDATA[ThreadLocal源码分析]]></description><category></category></item></channel></rss>