2011-10-22 111 views
0

我正在制作一个旨在模拟数据包如何通过Internet传输的应用程序,因此有些数据包会丢失。如何唤醒“等待”线程?

主线程等待响应,但必须有超时。

我想有一个定时器运行在一个线程中,如果定时器超时会中断主线程。我想知道是否可以同时运行这两个进程,即不需要进行一次睡眠。

+3

Oracle提供了精彩的教程和文档;你可能想要阅读它:http://download.oracle.com/javase/tutorial/essential/concurrency/index.html –

+0

线程背后的基本思想是,它们都是并行运行的(或者至少是交错的看起来如此;-)。我相信在这里处理交互的问题稍有不同,可能会被刷新更多:我更新了标题,我相信*问题是/正在... – 2011-10-22 20:50:49

回答

0

线程在java中存在的原因是它们可以并行运行。是的,两个线程可以并行运行。对于您的程序,它们并行运行。对于CPU,它们可能取决于您拥有的内核数量,也可能不取决于内核数量。

+0

我不确定如何工作,如果我使用sleep(),那么定时器不会增加。真正的问题是有一个socket.receive(),它正在等待一个数据包,但数据包可能永远不会到来,因此该进程被阻止。我不一定非要使用线程,还有其他方法可以确保我只在一定时间内等待数据包。 – Spart

+1

SetSoTimeout()方法为我需要的效果做了一些事情。 – Spart