繁体   English   中英

使用Java中的标志杀死线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM