我遇到一些异常,需要知道程序何时关闭自身,因为我需要关闭套接字。
我有默认的公共静态主方法,在其中重复执行一个操作和一个线程类。
private static Thread thread;
public static boolean isRunning = true;
public static void main(String[] args){
thread = new Thread(new ThreadListenServer());
thread.start();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run(){
// some action
}
}
timer.scheduleAtFixedRate(task, 0, 10000);
isRunning = false;
}
同时,还有在后台运行的线程类:
public class ThreadListenServer implements Runnable{
private DatagramSocket socket;
public ThreadListenServer() throws SocketException{
socket = new DatagramSocket(6655);
}
@Override
public void run() {
while(MainProgram.isRunning){
// some action
}
socket.close();
}
}
我不知道为什么,但是
isRunning
变成了 false,但是它不应该这样。如果主程序已关闭,我该如何关闭套接字?(这是因为线程仍然在后台运行,即使程序已关闭)。我考虑在主类中创建套接字,然后将套接字对象作为参数传递给 ThreadClass,如果程序已关闭,则也应该关闭套接字。