发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 下一页 Go 2

请bang解释下书中代码,如下线程运行后怎么解,会不会互相反复调用?一直不明白,帮帮我呀!

xh
2006-02-05 21:25
赞助商链接

public void run() { // normally in a new Thread
try {
while (!Thread.interrupted()) {
selector.select();
Set selected = selector.selectedKeys();
Iterator it = selected.iterator();
while (it.hasNext())
dispatch((SelectionKey)(it.next());
selected.clear();
}
} catch (IOException ex) { /* ... */ }
}
void dispatch(SelectionKey k) {
Runnable r = (Runnable)(k.attachment());
if (r != null)
r.run();
}

xh
2006-02-05 21:28

就是run调用dispath后,dispath又调用run,这种方法的意图是什么呀!请说下!!!!!!

2006-02-06 15:52

这里r.run();是一个新线程的run方法,不是上面那个线程了

xh
2006-02-07 09:58

我知道是一个新的run线程,可它的方法还是上面的那个public void run()
的,新的run满足条件又运行下面的dispatch();dispatch又产生新的run线程.可是这样怎么能运行到以后的Handle()或Accept();
请详细说下!

2006-02-07 17:57

>我知道是一个新的run线程,可它的方法还是上面的那个public void run()

这是一个新的线程,所有的线程共同特点都是有run()方法,所以你不能因为上面那个有run()方法,就以为,我说的新的线程就是上面那个线程,是一个新的应用线程类新的实例,不是同一个线程类的新的实例。

注意区别,饶舌....:)

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com