串串烧
一个XMLClient首先用XMLParseFactory作为参数,创建了一个ResourcePool,并设置了最大资源数为2.然后,第一个线程来请求解析器,调用了getResource方法。此时,还没有一个resource,需要通过factory方法创建一个。假设第二个线程又申请了一个resource,当然,因为线程池只有一个借出未归还的resource,所以它自己又创建了一个。假设上述线程都还未归还resource的情况下,第三个线程又来请求resource。但此时已达到了最大容量了,只能等待。过了一会儿,第一个线程运行完了,调用returnResource,归还资源,此时线程池有资源可用了,就notify一下。等待的第三个线程被唤醒,它拿到了那个resource,通过factory的validateResource方法,重新初始化那个resource,以使能为自己所用。