JVM在使用连续线程时无缘无故关闭

时间:2016-08-06 12:43:27

标签: java multithreading file timer directory

我遇到了程序问题。 我试图通过他们的结尾对下载的文件进行排序。到目前为止,我已经有了观察给定文件路径并在bacasoal.php内列出这些文件的结构。 我现在的问题是,程序会持续运行几秒钟,然后以退出代码0结束,所以一切都应该没问题。

HashSet

2 个答案:

答案 0 :(得分:0)

 new Thread() {
        public void run() {
            listNewFiles();
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };
    }.start();

这不是一个连续的线程。 在run()方法中,您没有允许线程继续运行的循环条件 因此,sleep(1000);播放一次,这是您run()方法中最后播放的指令。返回后,run()方法已终止,因此线程结束。

编辑:拥有连续线程的简单解决方案

例如,此代码允许线程永不停止,但进程终止:

 new Thread() {
        public void run() {

            while (true){
               listNewFiles();
               try {
                   sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
            }

        };
    }.start();

您可以有其他条件来停止循环(延迟,日期或时间,状态,按下的键等等)。要允许它,您应该将其置于while()条件或块if (condition) break中。

答案 1 :(得分:0)

    boolean wantToContinue = true;
    new Thread() {
    public void run() {

        while (wantToContinue){
           listNewFiles();
           try {
               sleep(1000);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
        }

    };
}.start();

使用布尔变量。所以你可以从外面控制动作。给予真实条件不是好习惯。

相关问题