对于我的项目,我们被要求实现自己的连接池。我们不允许从jdbc使用PGPoolingDataSource。当我使用jdbc池时,我的程序非常快,我自己的连接池不可预测且速度慢得多。我的连接使一些任务等待很长时间,这与jdbc池没有发生。
我正在使用Arrayblockingqueue来实现连接池,我只创建一个预先说过的连接数,然后让客户借用并将它们放回去。
我的意思是这似乎对我有意义,而且有效。但它的速度很慢,有时候任务需要永远完成,无论如何我还能改进它吗?让它更快更可靠吗?
答案 0 :(得分:2)
您使用错误的数据结构来存储连接ArrayBlockingQueue
是FIFO结构,这会降低您的处理速度,使用ConcurrentLinkedQueue
是合理且更快的选择。