SEK*_*SEK 21 java sockets multithreading
我正在构建一个侦听TCP和UDP的应用程序,而且我的关机机制遇到了一些问题.当我调用Thread.interrupt()每个侦听线程时,TCP线程被中断而不是监听,而UDP侦听器则没有.具体来说,TCP线程使用ServerSocket.accept(),它只返回(没有实际连接).UDP线程使用DatagramSocket.receive(),但不退出该方法.
这是我的JRE,我的操作系统中的问题,还是应该切换到(Datagram)Socket.close()?
更新:我发现了对问题的分析.它确认行为不一致.
Joh*_*int 32
中断网络IO的常用习惯是关闭通道.如果您需要在等待发送或接收时有效地中断它,那将是一个不错的选择.
public class InterruptableUDPThread extends Thread{
   private final DatagramSocket socket;
   public InterruptableUDPThread(DatagramSocket socket){
      this.socket = socket;
   }
   @Override
   public void interrupt(){
     super.interrupt();  
     this.socket.close();
   }
}
| 归档时间: | 
 | 
| 查看次数: | 10766 次 | 
| 最近记录: |