我正在構建一個偵聽TCP和UDP的應用程序,並且我遇到了一些關機機制的問題。當我在每個偵聽線程上調用Thread.interrupt()
時,TCP線程會中斷偵聽,而UDP偵聽器不會。具體來說,TCP線程使用ServerSocket.accept()
,它只是返回(不實際連接)。而UDP線程使用DatagramSocket.receive()
,並且不會退出該方法。中斷DatagramSocket.receive中的線程
這是我的JRE,我的操作系統的問題,還是應該切換到(Datagram)Socket.close()
?
更新:我發現了一個analysis的問題。它證實了這種行爲並不一致。
只是爲了幫助其他人處理相同的問題:我的`ServerSocket.accept()`沒有連接沒有返回。它正在返回,因爲我的瀏覽器(FF4b10)3次請求收藏夾圖標。其中一個請求是絆倒Thread.interrupted()檢查。我將切換到使用`close()`。 – SEK 2011-01-12 16:17:09