【发布时间】:2012-02-13 23:54:06
【问题描述】:
我想知道,是否可以创建对象池?这样我就可以从池中取出一个对象,一旦完成工作,我就可以将它放入池中。
【问题讨论】:
我想知道,是否可以创建对象池?这样我就可以从池中取出一个对象,一旦完成工作,我就可以将它放入池中。
【问题讨论】:
我想知道,是否可以创建对象池?这样我就可以从池中取出一个对象,一旦完成工作,我就可以将它放入池中。
有可能是的。如果新对象的构建成本很高(例如建立数据库连接)或由于其他原因 GC 带宽太高(通常是 Android 领域的问题),您可以在许多情况下看到性能提升。
这里有一些资源可用于实现您的池。您可以直接使用 Apache 的 ObjectPool。
【讨论】:
作为替代方案,如果每个对象不是那么重,和/或您不介意为每个线程保留对象,请考虑使用 ThreadLocal 对象。
http://tutorials.jenkov.com/java-concurrency/threadlocal.html
【讨论】:
虽然晚了,但可能有用。
以下链接提供了使用 apache-commons-pool-2 创建对象池的足够信息和实现细节:
http://www.techypages.com/2014/03/creating-object-pool-in-java.html
【讨论】: