Preciso criar um programa que inicie com uma thread e que de tempos em tempos verifique um servidor FTP. Se a condição for satisfeita suspende a thread e continua a execução do programa, senão volta para o começo. Isso é possível?
importjava.util.Random;publicclassTeste{publicTeste(){finalRandomrandom=newRandom();newThread(){publicvoidrun(){while(true){if(random.nextInt(10)==5)break;System.out.println("Errei");try{sleep(1000);//Para por 1 segundo}catch(InterruptedExceptione){e.printStackTrace();}}continuarPrograma();}}.start();}publicvoidcontinuarPrograma(){System.out.println("continuar");}publicstaticvoidmain(String[]args){newTeste();}}
M
magaupe
Não entendi bem o que essa classe Random faz.
Outra coisa é que no meu caso continuarPrograma() deve estar fora da thread e a mesma tem que ser suspendida para isso, só retornando a thread quando continuarPrograma() terminar.
I
ivo_costa
O Random te retorna um número randomico, fiz assim apenas para exemplificar um sequencia de testes até um acerto.
Se vc colocar o método continuar programa fora da Thread então ele irá executar independente da Thread se conectar no ftp ou não, pois ao iniciar a Thread o programa continua com a execução dos comandos abaixo. Da forma que vc qué só se não colocar Thread (isso vai acarretar um travamento no programa):
importjava.util.Random;publicclassTeste{publicTeste(){finalRandomrandom=newRandom();while(true){if(random.nextInt(10)==5)break;System.out.println("Errei");try{sleep(1000);//Para por 1 segundo}catch(InterruptedExceptione){e.printStackTrace();}}continuarPrograma();}publicvoidcontinuarPrograma(){System.out.println("continuar");}publicstaticvoidmain(String[]args){newTeste();}}
M
magaupe
Sobre o metodo continuarPrograma ele deve ser executado apenas se a condicao da thread for verdadeira. Essa thread deve ter algum tipo de timer que execute de tempos em tempos. Ao mesmo tempo o resto do programa não pode ser executado enquanto a thread estiver em execução.
Poderia me mostrar como seria o codigo adequado para esse meu exemplo em particular?
I
ivo_costa
Cara eu não estou conseguindo entender oq vc qué, e nem pq o continuarPrograma não pode ficar dentro da Thread, coloque um trecho de código do seu programa mostrando como está hoje e seja mais explicativo na sua questão.