此代码仅处理预设文件夹中存在的某些文件。但是在 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/