只要某些文件存在于预设文件夹中,此代码便会对其进行简单处理。但是在Eclipse上运行时,尽管文件夹中通常没有文件,但通常在以后添加文件,但线程终止。为了使它始终运行,我在run函数中添加了一个无限的while循环。这行得通,但是还有其他方法可以实现此目的,以便使用更少的内存吗?
这是代码:-

import java.io.*;

public class AddService extends Thread{

public void run(){
    while(true){
    Handler obj=new Handler();
    File[] listOfFiles=obj.getFileList();
    if(listOfFiles.length>0)
    {
        obj.process(listOfFiles);
    }
    else{
        try{

            AddService.sleep(1000);
        }
        catch(Exception ex){
        }
        }
    }
    }

public static void main(String args[]){
    AddService t1=new AddService();
        t1.start();
}
}

最佳答案

您可以通过ScheduledExecutorService做同样的事情

ScheduledExecutorService s = Executors.newScheduledThreadPool(1);
s.schedule(myrunnable, 1000, TimeUnit.SECONDS);

检查文件是否存在。另外,如果允许使用第三方库,则可以使用FileAlterationObserver观察目录中的更改

关于java - 当暂时不满足条件时,如何防止线程终止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28830445/

10-11 00:08