最近有个需求,是关于一个Socket连接池的功能改造,要求实现下面的需求:
- 可配置多个服务器地址
- 服务器地址可以配置权重(比如3:2:1)
- 连接池可以设置最小连接和最大连接
- 某服务器从崩溃中恢复后,连接池中的连接数可以自动恢复到服务器之间的权重比。
- 连接可设置最大空闲释放时间
一开始有同事自定义了一个链表来做取数和归还的操作,在线程安全方面操作感觉还是有点麻烦。 后来我采用PriorityBlockingQueue来实现,其实就是内部变成了堆的结构。见下面的图:
最近有个需求,是关于一个Socket连接池的功能改造,要求实现下面的需求:
一开始有同事自定义了一个链表来做取数和归还的操作,在线程安全方面操作感觉还是有点麻烦。 后来我采用PriorityBlockingQueue来实现,其实就是内部变成了堆的结构。见下面的图: