我对Pool与Cache两个词的理解

来源:互联网 发布:黄金时代 知乎 编辑:程序博客网 时间:2024/05/16 04:55
Pool里的东东,一般都是创建起来开销比较大,线程不安全的,但是,同时又是取出无状态(每一个元素拿出来的时候都是一样的)的。

例如:JDBC Connection, Thread ...

说明:

1. 线程安全的无状态的东西是不需要Pool的,例如Servlet, Struts的Action,整个系统用一个实例就可以了(Singleton Pattern)。

2. 线程不安全的无状态的东西,如果创建起来花费不是很大,那么一般也不需要创建Pool

注意:Pool里的东西实际上是有状态的,因为整个生命周期中都无状态的东西,肯定是线程无关的


而Cache里的东西,一般是创建或者生成开销比较大(例如:需要多次数据库查询),同时,是有状态的(每一个元素拿出来都是不一样的)

1. Cache一般来说都应该是线程安全的

2. 设计上要注意避免死锁