[英]Kill a Thread working with flag in Java
我以这种方式在Java中实现了自己的线程:
public class MyThread extends Thread{
protected boolean exit = false;
protected void kill(){
exit = true;
}
}
因此,当我创建线程时,方法run()如下所示:
public void run() {
...
while(!exit) {
...
}
}
我的问题如下:我正在使用线程类来接收和发送数据报。 但是,当线程正在等待数据报时,如果我调用函数MyThread.kill(),则该线程仍将等待下一个数据包,然后再结束自身... 如何在不等待另一个数据包的情况下杀死线程? 非常感谢你
设置退出标志后,请自行向线程发送数据报以解除阻止。 顺便说一句, exit
应该是volatile
。
中断对DatagramSocket.receive()
的调用的正确方法是关闭套接字,然后receive()
将引发SocketException
。 因此,在设置exit
标志后,您应该在kill()
方法中关闭UDP套接字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.