我遇到一個奇怪的問題,我有一個線程用於偵聽套接字上的傳入消息。該線程是全局聲明的,但在方法listen()中實例化。這允許我從另一個方法stopListen()中斷它,但是當第一次調用listen()和stopListen()時,它看起來不會被中斷。代碼評論爲「做一些事情」在第二次等待傳入消息後仍然執行。以下是代碼的簡化版本。執行多次中斷的Java線程
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();
}
}
我明白它有點奇怪,有一個變量和一個叫做相同事物的方法。應該這樣做還是不能通過多次使用全局變量來中斷線程?
謝謝。
你叫'listen()'多少次?每次調用都會啓動一個新線程。發佈使用類的代碼。 – chr
listen()在應用程序加載時調用。然後,我有一個JDialog,在它的構造函數調用stopListen(),並在其關閉的方法聽 「this.addWindowListener(新WindowAdapter的(){ @覆蓋 公共無效的windowClosed(WindowEvent五){ con.listen(); } });' – user2297216
對上面評論中格式不好的道歉,我在stackoverflow上的第一篇文章。只是爲了澄清,只有一個JDialog是打開的,並且希望當這個線程被中斷時。 – user2297216