Pool里的东东,一般都是
创建起来开销比较大,线程不安全的,但是,同时又是
取出无状态(每一个元素拿出来的时候都是一样的)的。
例如:JDBC Connection, Thread ...
说明:
1. 线程安全的无状态的东西是不需要Pool的,例如Servlet, Struts的Action,整个系统用一个实例就可以了( Singleton Pattern)。
2. 线程不安全的无状态的东西,如果创建起来花费不是很大,那么一般也不需要创建Pool
注意:Pool里的东西实际上是有状态的,因为 整个生命周期中都无状态的东西,肯定是线程无关的。
而Cache里的东西,一般是 创建或者生成开销比较大(例如:需要多次数据库查询),同时,是 有状态的 (每一个元素拿出来都是不一样的)
1. Cache一般来说都应该是线程安全的
2. 设计上要注意避免死锁
例如:JDBC Connection, Thread ...
说明:
1. 线程安全的无状态的东西是不需要Pool的,例如Servlet, Struts的Action,整个系统用一个实例就可以了( Singleton Pattern)。
2. 线程不安全的无状态的东西,如果创建起来花费不是很大,那么一般也不需要创建Pool
注意:Pool里的东西实际上是有状态的,因为 整个生命周期中都无状态的东西,肯定是线程无关的。
而Cache里的东西,一般是 创建或者生成开销比较大(例如:需要多次数据库查询),同时,是 有状态的 (每一个元素拿出来都是不一样的)
1. Cache一般来说都应该是线程安全的
2. 设计上要注意避免死锁