2011-10-22 75 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