tim*_*tea 37 java multithreading object-pooling
我正在寻找Java中的对象池的现代实现.我可以看到apache commons one,但说实话,我宁愿使用泛型,以及来自更新版本java的并发内容.
公共泳池真的运作良好吗?代码看起来很漂亮,呃,丑陋.
我需要一些允许自定义活动验证等的东西.
谢谢!
Pas*_*ent 18
我可以看到apache commons one,但说实话,我宁愿使用泛型,以及来自更新版本java的并发内容.
嗯,事实是这种项目(通用对象池)并没有太大的吸引力,因为现在对它们的需求很少(对象创建很便宜).这可能解释了为什么你看不到它们(实际上,我只知道Commons Pool).
话虽如此,如果泛型是您的主要关注点,您可以修补Commons Pool,请参阅POOL-83,它附有补丁.
公共泳池真的运作良好吗?代码看起来很漂亮,呃,丑陋.
它确实有一些已知的错误(四个),但据我所知,它有效.关于最后一句,好吧,如果你认为你可以写出更好的东西,如果你有时间,为什么不做呢?
我需要一些允许自定义活动验证等的东西.
您没有无限多个选项.或
Commons Pool是您项目的理想选择.
如果不知道您需要什么功能,很难提出建议.
如果池中的对象数量是固定的,则可以使用@codedevour提到的问题中的a BlockingQueue
作为示例
如果到池所需的值可以用一个键关联,您可以使用地图制作工具从番石榴
ConcurrentMap<Key, Connection> connections = new MapMaker()
.concurrencyLevel(32)
.softKeys()
.weakValues()
.expiration(30, TimeUnit.MINUTES)
.evictionListener(
new MapEvictionListener<Key, Connection>() {
public onEviction(Key key, Connection connection) {
connection.close();
}
});
.makeComputingMap(
new Function<Key, Connection>() {
public Connection apply(Key key) {
return createConnection(key);
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13874 次 |
最近记录: |