在平时工作中,听说和使用过连接池,线程池等.还有一种就是对象池,可以实现对象复用的功能....当然实现对象池的方式手段有多种,比如有一个公共的池子,所有需要对象的线程通过并发控制的方式从池子中获取对象,并发控制的同时伴随性能的损耗.那么Netty是如何实现对象池的呢?...接下来继续分析Netty的对象池, 代码中是通过io.netty.util.Recycler#get方法获取对象的,追踪此方法.
public final T get() {
// 如果没有启用线程池...到目前为止,看一下此时的结构
正所谓'有借有还',既然它是一个对象池,当使用完之后,需要调用回收方法. 在文章一开始我们自己设计的Book类中也实现了回收方法....分析到这里,我们可以总结下Netty对象池的实现了.
每个线程都有一个Stack用于'装载'需要复用的对象. 同时其他线程也会'协助'它回收对象.