我想知道,是否可以创建一个对象池?所以我可以从池中取出一个对象,一旦我完成了工作,我就可以将它放入池中。
答案 0 :(得分:15)
我想知道,是否可以创建一个对象池?所以我可以从池中取出一个对象,一旦我完成了工作,我就可以将它放入池中。
可能是的。如果新对象的构造很昂贵(如建立数据库连接),或者由于其他原因导致GC带宽过高(通常在Android版本中存在问题),您可以在许多情况下看到性能改进。
以下是一些可用于实施池的资源。您可以立即使用Apache的ObjectPool
。
答案 1 :(得分:1)
虽然很晚但可能有用。
以下链接提供了使用apache-commons-pool-2创建对象池的充分信息和实现细节:
http://www.techypages.com/2014/03/creating-object-pool-in-java.html
答案 2 :(得分:1)
或者,如果每个对象的重量都不大,和/或您不介意为每个线程保留该对象,请考虑ThreadLocal对象。
http://tutorials.jenkov.com/java-concurrency/threadlocal.html