Thread que espera por um arquivo

Pessoal preciso criar um método que fica esperando pela criação de um determinado arquivo, ou seja, uma thread que fica verificando se o arquivo foi criado ou não porém com um tempo limite. Isso eu consegui mas eu preciso que o método tenha um retorno, true ou false para saber se o arquivo está lá dentro do tempo estipulado, será que alguém tem alguma idéia, abaixo está o que eu já fiz, ele espera pela criação do arquivo durante 60 segundos porém não tem retorno se encontrou ou não…

/Aguarda a criação do arquivo
     public static void aguardaRetorno()
     {
         final java.util.Timer timer = new java.util.Timer(true);
         
         class verificaArquivo extends TimerTask 
         {
                int numTentativas = 60;
                boolean flag = false; //variável que indica se o arquivo foi encontrado ou não
                
                public void run() 
                {
                    if (numTentativas > 0 && flag == false) 
                    {
                        File file = new File("C:/texto.txt");
                        if(file.exists())
                        {
                            flag = true;
                            javax.swing.JOptionPane.showMessageDialog(null, "Achou arquivo !!!!!");
                        }
                        numTentativas--;
                    } 
                    else 
                    { 
                        if(flag == false && numTentativas == 0)
                            javax.swing.JOptionPane.showMessageDialog(null, "A Operação não foi efetuada durante o tempo mínimo.");
                        timer.cancel();
                    }
                }
         }
         timer.schedule(new verificaArquivo(),0,1*1000); // Verifica se o arquivo de resposta foi criado de 1 em 1 segundo
     }

syncronized(obj){ obj.wait(10000); // 10 segundos.... }
Isso faz com que seu código espere uma notificação por 10 segundos e caso a mesma não venha ele libera o processo. Essa notificação deve ser feita pelo metodo notify ou notifyAll dá uma olhada no javadoc da classe Object que você vai entender bem esse mecanismo.

Por questões óbvias o processo de criação/notificação deve estar rodando em uma outra thread para poder notificar a thread que aguarda a criação do arquivo. A princípio pode parecer confuso mas é um conceito bem básico e rico em documentação…

Tu pode usar um método static na classe mãe e chamar ele na thread:


public class Ivo {

	public static void arquivoValido(boolean arquivoValido){
		if(arquivoValido){
			//Arquivo Criado
		}
		else{
			//Arquivo não criado
		}
	}
	
	private void vai(){
		new teste().start();
	}
	
	
	class teste extends Thread{
		
		public void run(){			
			if(//Testa se o arquivo foi criado)
			{
				Ivo.arquivoValido(true);
			}
		}                  
		
	}
	
}

Olha tenta assim ve se fica melhor


                             .
                             .
                             .
                             .
                 int numTentativas=0;
                 boolean flag=false;
                 file = new File("C:/texto.txt"); 

                  public void run()   
                 { 
                  while (flag == false){

                  if ( numTentativas > 0 ) {  
                     if (file.exists()){
                        flag = true;  
                        javax.swing.JOptionPane.showMessageDialog(null, "Achou arquivo !!!!!");
                        numTentativas = 0;                            
                      }else{
                        numTentativas--;
                       }
                   }else{
                       javax.swing.JOptionPane.showMessageDialog(null,
                       "A Operação não foi efetuada durante o tempo mínimo.");  
                   }
                                       
              }

t+