Galera estou procurando arquivos usando threads, o código que eu desenvolvi procura o arquivo certinho , mas acontece que ele não acaba a execução quando encontra , ou seja caso ele não encontre ele continua executando.
import java.io.File;
import java.util.Scanner;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import javax.swing.JOptionPane;
public class ProcuraArquivoThreadPool implements Runnable{
private static boolean achou;
private File pasta;
private String arquivo;
private Executor pool;
public ProcuraArquivoThreadPool(File pasta, String arquivo, Executor pool) {
this.pasta = pasta;
this.arquivo = arquivo;
this.pool = pool;
}
public static void procura(String pasta, String arquivo, Executor pool) {
achou = false;
pool.execute(new ProcuraArquivoThreadPool(new File(pasta), arquivo, pool));
}
public void run() {
if(achou){
return;
}
for(File f : pasta.listFiles()){
if(achou){
break;
} else if(f.isDirectory()){
pool.execute(new ProcuraArquivoThreadPool (f, arquivo, pool));
} else if(f.getName().equalsIgnoreCase(arquivo)){
System.out.println("Achei: " + f.getPath());
achou = true;
break;
}
}
}
public static void main (String[] args){
Scanner teclado = new Scanner(System.in);
//System.out.println("Digite o caminho da Pasta");
//String pasta = teclado.nextLine();
System.out.println("Digite o arquivo a ser procurado");
String arquivo = teclado.nextLine();
String pasta = "C:/";
System.out.println("Procurando......");
ScheduledExecutorService threadpool = Executors.newScheduledThreadPool(4);
procura(pasta, arquivo,threadpool);
}
}