我有一个奇怪的问题,我有一个线程用于侦听套接字上的传入消息。线程是全局声明的,但在方法listen() 中实例化。这允许我从另一种方法 stopListen() 中断它,该方法第一次运行良好,但是当第二次调用 listen() 和 stopListen() 时,它似乎没有被中断。注释为“做一些事情”的代码在第二次等待传入消息后仍会执行。下面是代码的精简版。
public class Con {
private Thread listen;
public void listen() {
listen = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.interrupted()) {
//Wait for an incoming message
if (!Thread.interrupted()){
//Do some stuff
}
}
}
});
listen.start();
}
public void stopListen() {
listen.interrupt();
}
}
我知道拥有一个变量和一个称为同一事物的方法有点奇怪。这应该工作还是我不能多次使用全局变量来中断线程?
谢谢。