我得到一些異常,並且我需要知道程序何時關閉,因爲我需要關閉套接字。Java如何在程序關閉時停止線程
我有默認的公共靜態主要方法,我不斷重複一個動作和一個線程類。
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
它變得假的,但它不應該。如果主程序關閉,我該如何關閉套接字? (這是因爲即使程序關閉,Thread仍然在後臺運行)。
我正在考慮在主類中創建套接字,然後將套接字對象作爲參數傳遞給ThreadClass,並且如果程序關閉了,我也應該關閉套接字。
當你關閉一個進程時,它將關閉所有的資源,包括套接字。 – 2013-05-04 20:09:12
由於您將其設置爲false,因此它變得不真實。 – 2013-05-04 20:10:21
考慮使用執行程序而不是單獨的線程。完成後很容易重新獲得控制權。 – 2013-05-04 20:26:07