在 Java 中找不到对象池的现代实现 [已关闭]

2022-09-01 05:24:01

我正在寻找Java中对象池的现代实现。我可以看到apache commons,但说实话,我宁愿使用泛型,以及来自更新版本java的并发性的东西。

公共游泳池真的运作良好吗?代码看起来很漂亮,嗯,丑陋。

我需要一些允许自定义活动验证等的东西。

谢谢!


答案 1

我可以看到apache commons,但说实话,我宁愿使用泛型,以及来自更新版本java的并发性的东西。

好吧,事实是,这种项目(通用对象池)没有得到太多的牵引力,因为现在几乎不需要它们(对象创建很便宜)。这可能解释了为什么你没有看到很多(实际上,我只知道Commons Pool)。

话虽如此,如果泛型是你主要关心的问题,你可以修补Commons Pool,参见POOL-83,它有一个附加的补丁。

公共游泳池真的运作良好吗?代码看起来很漂亮,嗯,丑陋。

它确实有一些已知的错误(四个),但据我所知,它是有效的。关于最后一句话,好吧,如果你认为你可以写出更好的东西,如果你有时间,为什么不去做呢?

我需要一些允许自定义活动验证等的东西。

你没有无限数量的选择。也

  1. 找到一些可以满足您所有需要的东西(我不知道这样的库,这并不意味着没有任何库)。
  2. 如果您找不到开箱即用的一切,请扩展现有的解决方案。
  3. 推出您自己的解决方案。

答案 2

Commons Pool是您项目的一个很好的候选者。

  1. 泛型接口 - 公共池最明显的问题是它的预泛型接口。您可以通过多种方式解决此问题。您可以
    1. 做铸造;
    2. 实现一个并行接口,为您执行转换;或
    3. 使用帕斯卡识别的补丁
  2. 来自较新的java的并发性内容 - 这是一个你不应该关心的实现细节。如果并发性是正确的,那么如何实现正确性并不重要。或者,使用较新的内容但其并发性错误但仍为错误的池实现仍然是一个较差的候选项。
  3. 丑陋的代码 - 你应该使用它,而不是嫁给它。
  4. 自定义活动性验证 - 实现验证对象以测试对象的活动性。死物将被销毁。您还可以实现 Cron 任务以定期借用和返回对象 - 强制及时消除死对象。