NIO socket 的简单连接池
某厂面试归来,发现自己落伍了!>>> 在最近的项目中,需要写一个socket 与 底层服务器通信的模块。在设计中,请求对象被封装 xxxRequest,消息返回被封装为 xxxResponse. 由于socket的编程开发经验少,一开始我使用了短连接的方式,每个请求建立一个socket通信,由于每个socket只进行一次读写,这大大浪费了 系统资源。 于是考虑使用长连接,系统公用一个client socket 并对send 操作进行加锁,结果在处理并发的时候,各种慢,各种等待。没有办法,考虑使用两节池,预先创建多个 client socket 放入 连接池,需要发送请求时从连接池获取一个socket,完成请求时放入连接池中。下面是一个简单的实现。 private static String IP=GlobalNames.industryIP; private static int PORT =Integer.parseInt(GlobalNames.industryPort); private static int CONNECTION_POOL_SIZE = 10; private static NIOConnectionPool self = null; private Hashtable<Integer, SocketChannel> socketPool = null; /