据说jdk1.4有什么更好的解决办法,但是没有找到相关资料。
好像说jdk1.4对socket的异步通讯有所改进,不知道谁能帮我找到相关的资料?高分重谢!
好像说jdk1.4对socket的异步通讯有所改进,不知道谁能帮我找到相关的资料?高分重谢!
解决方案 »
- 深入理解.net java平台底层
- (1987-2008)&&(!(2004,1989,2006))&&(<19) 如何提取
- utf-8 或 gbk 如何转成 Unicode
- type mismatch : cannot conver from object to int[]
- JDOM生成XML的时候会自动去空格么??怎么让他不去啊??
- 有没有办法搜索到一个项目中左右没被调用的方法
- 这样的问题能解决吗?
- 2.6+2.3+2.2=7.1000000000000005 这是怎么回事?
- 求解 A/D 转换 给我一点提示 谢谢
- 帮忙改一下小代码
- 如何从openldap取得中文信息?
- Java的拷贝和粘贴
线程池对我的应用来说没有什么意义阿,我的client是要求永远在线的,也就是说一旦client端连接上,就不能休眠的,其间有心跳用来保持长连接。除非client吊线,否则thread没有休眠的时候。我还是想寻求socket的异步模式来做这件事。
我找到了一些资料,但还是不太懂:希望有人帮芒解释一下:Java 2标准版 1.4的新I/O功能
非独占式读取现在到了有趣的部分,也就是人们最关心的新I/O软件包。你怎么配置非独占式 通道连接的?基本步骤是在打开的SocketChannel上调用 configureBlocking方法,传送一个false值。调用 connect方法后,该方法会立即返回。
非独占式服务器最后一段是让Web服务器使用NIO软件包。有了新的I/O能力,你可以创建一个不需 要每个连接建立一个线程的Web服务器。当然,对于长时间处理的任务,可以将线程 放入队列,但你要做的一切只是select,然后等到事件发生,而不必 让所有线程分别等待。使用通道的服务器的基本设置包括:调用bind把 ServerSocketChannel连接到InetSocketAddress。ServerSocketChannel channel =
ServerSocketChannel.open();
channel.configureBlocking(false);
InetSocketAddress isa =
new InetSocketAddress(port);
channel.socket().bind(isa);
其余事情几乎与客户机的读操作相同,只不过这次需要注册OP_ACCEPT 关键字,当选择器通知你事件发生时,检查是不是isAcceptable,然后 获取一个ServerSocketChannel而不是SocketChannel。
请高手指教..............不胜感谢。