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

xh 06-02-05

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,这种方法的意图是什么呀!请说下!!!!!!

banq
2006-02-06 15:52

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

xh
2006-02-07 09:58

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

banq
2006-02-07 17:57

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

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

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

2Go 1 2 下一页