我正在尝试基于经典I/O
实现tcp客户端。为了减少协商延迟,我决定创建一个到服务器的连接池,如下所示:
BlockingQueue<Socket> connections = //
每次线程尝试与服务器通信时,都会执行以下操作:
Socket s = null;
try{
Socket s = connections.take();
if(s.isClosed())
s = //create a new connection
//send data to the server
} finally {
if(!connections.offer(s))
throw new IllegalStateException();
}
我不确定这样做是否常见。至少我没有听说过这种方法。有人可以建议一些比较常见的东西。