EchoSession接受一个Socket对象作为构造参数,在其run()方法中,它不停的从这个Socket对象的InputStream里面读数据并写回到该Socket的OutputStream中去,直到这个连接被客户端关闭为止(InputStream的read方法返回-1)。 EchoSession需要一个线程来执行,这容易让人联想到用Thread来作为EchoSession的父类。不过,这样做不够灵活,开销也比较大。而选择让EchoSession实现Runnable接口就灵活得多。在接下来的使用Thread Pool的Echo Server中可以看到这一点。 以上已经是一个完整的TCP Echo Server,不过随着客户不停的连接和断开,这个服务器会不停的产生和消除线程,而这两个都是比较‘昂贵’的操作。为了避免这种消耗,可以考虑采用Thread Pool的机制。 使用在一个简单的Thread缓冲池的实现一文中Thread Pool的实现,可以对EchoServer作如下修改(EchoSession无需做修改):
|
正在阅读:Java进阶学习:网络服务器编程Java进阶学习:网络服务器编程
2004-11-10 15:24
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键