我写了个连接池,用list保存长连接socket对象,请求过来的时候会从list中获取socket的,然后获取流,用这个流处理业务
Socket socket = list.remove(0);// 从池子中获取socket
OutputStream os = socket.getOutputStream();
os.write("xxxxxxxxxx");// 处理业务
os.flush();
list.add(socket);// socket还回去
1.os我不能关闭啊,要是关闭了第二次拿的时候会提示socket已经被关闭。(直接关闭流会导致socket关闭已经确认,网络也有文章说明)
2.如果放之不理,虽然每次都能打开流也能实现读写,但是会有很多os对象驻留内存中,怕高并发下有内存泄漏。
3.socket的shutdowOutpunt也试过了,虽然不会导致socket关闭,但是第二次getOutputStream用来处理业务的时候就报错了,提示已经shutdown。
4.这里暂不讨论nio的情况,如果是普通io能实现我想要的功能么?或者是莫非把流对象也用map缓存起来。