I'm building an application that listens on both TCP and UDP, and I've run into some trouble with my shutdown mechanism. When I call Thread.interrupt()
on each of the listening threads, the TCP thread is interrupted from listening, whereas the UDP listener isn't. To be specific, the TCP thread uses ServerSocket.accept()
, which simply returns (without actually connecting). Whereas the UDP thread uses DatagramSocket.receive()
, and doesn't exit that method.
Is this an issue in my JRE, my OS, or should I just switch to (Datagram)Socket.close()
?
UPDATE: I've found an analysis of the problem. It confirms that the behavior is not consistent.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…