只要某些文件存在于预设文件夹中,此代码便会对其进行简单处理。但是在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/