在IM客戶端的情況下。我做了2個獨立的線程來處理髮送數據包(通過std io)和接收數據包。問題是如何讓這兩個線程同時運行,以便我可以隨時提示輸入,同時隨時準備接收數據包?同時運行2個線程
我已經嘗試設置一個計時器,但數據總是丟失接收。
在IM客戶端的情況下。我做了2個獨立的線程來處理髮送數據包(通過std io)和接收數據包。問題是如何讓這兩個線程同時運行,以便我可以隨時提示輸入,同時隨時準備接收數據包?同時運行2個線程
我已經嘗試設置一個計時器,但數據總是丟失接收。
我想你可能會錯過一些顯著有兩種線程,流或兩者:-)
你可以開始一個新的線程這樣的:
myThread.start();
線程將被啓動和運行()方法將由jvm自動執行。
如果線程run-method正在讀取一個Stream,並且它是唯一一個讀取,它將不會「錯過」該流中的任何內容。
沒有更多的細節,很難給出完整的答案。然而,這裏是啓動兩個線程的代碼:
Thread thread1 = new Thread() {
public void run() {
// ... your code here
}
};
Thread thread2 = new Thread() {
public void run() {
// ... your code here
}
};
thread1.start();
thread2.start();
我的發送和接收線程分別依靠發送和偵聽UDP套接字。從我所能理解的,你的示例代碼似乎立即在代碼中注入線程。我爲他們創建了一個可運行的類,那麼您的方法是否適用於此類? – lamsaitat 2009-04-20 16:22:42
那麼,他們將無法運行同時除非你有一個多處理器計算機,但是這通常不是問題。會發生什麼情況是每個線程都會得到一段時間,或多或少地取而代之。
如果你正在丟失I/O,這可能不是線程,這是你真正的問題。你能告訴我們你是如何閱讀這些東西的嗎?
一般來說,一段代碼可以顯示你的行爲,對獲得高質量的答案有很大的幫助。 – 2010-05-02 06:26:44