2017-02-24 47 views
0

自從我學習了多線程概念之後,我覺得自己有點'觸發快樂',每當我需要完成一項新任務時添加線程,以及我擔心我會有點過度。使用UDP監聽端口而不會產生另一個線程

有沒有什麼辦法可以在DatagramSocket(以java爲例)上偵聽而不創建線程並阻止它?這是普遍接受的方式,還是有更好/更標準的方式?

+0

線程有什麼問題? :)他們是這樣的任務使用的東西 – borowis

+0

我不是一個真正的java人,但我確信有一種方法可以使用'select'或'poll'系統​​調用。從簡短的網頁搜索看來,'java.nio.channels'就是要走的路。查找'DatagramChannel',它可以用一個'Selector'註冊,這樣您就可以一次等待多個通道,並且還可以實現超時。 –

+1

@GilHamilton很酷!我想我只會採用線程方式。我只是擔心我製作了太多的Java線程,但我想這就是多線程的要點。多謝你們! –

回答

0

@Brydon Gibson:如果你不想創建一個線程,你可以使用主線程或當前線程。

但是你必須知道,使用socket.receive()方法進行偵聽時,該線程將被阻塞。我不知道這是你想做什麼。

順便說一句,你只需要一個線程來監聽你的套​​接字。

UDP Client/Server