关于阻塞式I/O和非阻塞式I/O的问题

xllee 2009-12-16 10:15:52
如题,二者的定义,具体的应用,给一些源码例子(加注释),先谢谢各位高手
...全文
155 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhxxx 2009-12-16
  • 打赏
  • 举报
回复

可以参考下列的例子
http://blog.csdn.net/hzhxxx/archive/2009/12/09/4970196.aspx

下列描述了JNSP(java network service platform)服务的部署和功能,如有不明白之处,自己查看源代码,我无力和没有太多时间回答太多的问题.
源代码一起提供,可以随意修改,发布,并商业化,但请保留作者的信息.为了技术的进步,请注意共享成就.

目前已经发布于:http://download.csdn.net/source/1885332;http://hzhxxx.download.csdn.net/
如果查看后有技术问题探讨和建议的,欢迎致电致信联系.系统架构设计和实现有如下特点:
A. 采用 Accept-Connect 通讯模型,能统一管理系统中使用的所有 Socket 资源;
B. 系统支持通信和协议分离的实现原则,支持自定义协议解析模块;通信负责数据收发,协议负责数据鉴别,两者配合实现通信和协议的和谐工作;
C. 灵活支持业务处理功能重定义,分级支持慢业务和快业务的不同业务处理线程;
D. 丰富灵活的配置参数,能满足高扩展性;
E. 配合业务处理和通信模型,能异步的管理所有的交互步骤;
F. 分布式服务设计和部署,实现动态(热拔插)的增加和较少业务服务器,减少乃至拒绝单点服务;

  • 打赏
  • 举报
回复
这个好帖子
http://www.cnblogs.com/daidu/archive/2009/11/06/1597264.html
  • 打赏
  • 举报
回复
public class NioWorker implements Runnable {
public NioWorker(Selector sel) {

_sel = sel;
_added = new HashSet();

}

public void run() {
try {

try {

while (_run) {

_sel.select();

Set selected = _sel.selectedKeys();

for (Iterator itr = selected.iterator(); itr.hasNext();) {

SelectionKey key = (SelectionKey) itr.next();

NioSession s = (NioSession) key.attachment();

s.process();

itr.remove();

}

synchronized (_added) {

for (Iterator itr = _added.iterator(); itr.hasNext();) {

NioSession s = (NioSession) itr.next();

SelectionKey key = s.channel().register(_sel, s.interestOps(), s);

s.registered(key);

itr.remove();

}

}

}


} finally {



_sel.close();



}



} catch (IOException ex) {



throw new Error(ex);



}



}

public void add(NioSession s) {

synchronized (_added) {



_added.add(s);



}



_sel.wakeup();



}







public synchronized void stop() {



_run = false;



_sel.wakeup();



}


public void closeAllChannels() {



for (Iterator itr = _sel.keys().iterator(); itr.hasNext();) {



SelectionKey key = (SelectionKey) itr.next();



try {



key.channel().close();



} catch (IOException ex) {}



}



}



protected Selector _sel = null;



protected Collection _added = null;



protected volatile boolean _run = true;



}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧