2012-05-25 43 views
0

我正在實現TCP的簡單版本,但缺乏多線程技術。主線程控制2個線程:處理多線程事件

1.定時器(倒計時時間,如果超時,通知主線程再做一些工作)

2.永遠聽傳入的數據包,循環。如果接收到數據包,則更新主線程中的一些數據

主線程在發生某些信號時應採取措施。

我沒有事件處理的經驗和設計一些信號通知主線程。 我應該從哪裏開始?例如,子線程更新主線程專用字段。或者我應該創建一些事件?

這裏的主線程一些僞代碼:

while(true){ 
    event: send data ,then ... 
    event: timeout , then send packet again 
    event: packet received, then update data in private filed 
} 
+0

你做了什麼研究?你看過什麼網絡資源? – Gray

+0

@Grey http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html和Excutor接口,BlockingQueue接口 – CodeFarmer

回答

1

如果你是新在Java多線程的概念,我建議您閱讀本教程第一:http://docs.oracle.com/javase/tutorial/essential/concurrency/

討論你的具體問題,你應該有兩個線程: - 一個用於監聽您的套接字,這將擴展線程。它應該在施工時收到對主要對象的引用,並不斷收聽您的套接字。當有東西到達時,該線程將調用主對象的處理例程以採取行動。只有在忙碌的等待時纔要小心 - 在套接字尚未準備就緒的情況下產出一段時間 - 你的計時器可能是TimerTask的擴展。看看http://www.cloudhadoop.com/2012/01/timers-in-java-create-timer-in-java.html爲了解更多。