我用的是SWT做的窗口程序,假如运行五个无线循环的线程,如何当我关闭程序时,线程也不工作并自动释放呢?

解决方案 »

  1.   

    可以这样试试
    Runtime.getRuntime().addShutdownHook(
        new Thread() {
            public void run() {
                try {
                    yourThread.interrupt(); //或者在你的Thread的设置一个标志over,在循环中判断if (over) break;然后这里yourThread.setOver(true);
                } catch (Throwable e) {
                    e.printStackTrace();
                }
            }
        }
    );
      

  2.   

    退出窗口的时候jvm应该也退出,os会回收的!
    以前我也用SWT做了个窗口程序,也有无线循环的线程。我发现窗口推出的时候jvm也推出了
      

  3.   

    可以这样试试
    Runtime.getRuntime().addShutdownHook(
            new Thread(){
                    public void run(){ 
    try {...
    }   catch   (Throwable   e){
    e.printStackTrace();
    }  finally{
    yourThread.interrupt(); //或者在你的Thread的设置一个标志over,
    在循环中判断if   (over)   break;然后这里yourThread.setOver(true); 
    }
            }
            }
    );
      

  4.   

    我结束的时候用的是 
    return......