如何在分离线程中使用ObjectPool?

时间:2014-11-09 17:47:41

标签: java multithreading

对象轮询的原则非常有趣

对我而言,如果没有多线程执行,它就不会很强大。

例如,我试试这个库furious-objectpool

调试显示create / passivate方法是在同一个请求线程中执行的,我如何在另一个线程中利用它来利用它?

1 个答案:

答案 0 :(得分:1)

Java中不鼓励使用对象池。它们是一个相当昂贵的概念,通常比创建一个对象更昂贵(新的运算符需要~10个指令,池中的获取/释放通常需要更多)。

此外,Java中长期存在的对象往往会使GC无法清理资源。

我真的鼓励你使用一些DI容器和一些不错的无状态bean。它非常快(通常每种类型只有1个对象)并且可以很好地管理。

但是,如果您确实需要使用池,请确保将其用于具有非常昂贵的构造过程的对象 - 通常是某种网络连接(数据库连接是最常见的示例)。

至于另一个线程的东西:这样的池是(或者反正的意思是什么?)总是线程安全的。典型的使用场景将涉及某种服务器(如REST服务),它每分钟接受并执行大量用户请求。

编辑: 请 - 请不要使用技术/库,因为它看起来很酷。从长远来看,它往往会给你带来麻烦。