我正在寻找一个具有完全非阻塞API的资源池,用于在客户端汇集Netty频道。 Netty的ChannelPool很好,但它强制从事件循环by design写入频道。我希望在频道已经可用时摆脱上下文切换,并可能节省一些未来/承诺分配。
由于Netty没有提供任何开箱即用的功能,我正在寻找通用池实现。我理想的API看起来像
interface Pool<T> {
void acquire(Consumer<T> resourceConsumer);
void release(T resource);
}
+所有关闭方法和资源工厂挂钩。资源准备就绪后,将立即调用消费者。当资源不可用时,可能会在提供的执行程序中触发使用者(因为我们不想过多地从release
链接调用)。
有什么能给我这个吗?我知道Apache Commons池,HikariCP和其他一些专用池,但它们遵循阻塞borrowObjectFromPool
模式。我更喜欢无锁的变体,但是让这些实现细节保持到项目的成熟度。