Alguem sabe como cancelar uma solicitacao de Thread.sleep ??
preciso de algo mais ou menos assim ::
Stringstr=meuField.getText();if(str.equals("dorme"){Thread.sleep(20000);{System.out.println("dormiu com sucesso");}elseif(str.equals("cancelar dormir"){/* aqui colocaria um comando para ele cancelar a solicitacao de sleep,ou melhor, ele ja tera comecado a contar o tempo, mas se receber cancelar dormir antes do tempo setado no sleep tiver passado, ele deve parar a contagem e nao executar mais o bloco de programacao.*/}
Se alguem souber alguma maneira de fazer isso, posta ai ok.
Pelo código que tu colocou aí nao tem necessidade de acordar do sleep, voce deu um if(tal) //dormir else //outra acao, isso quer dizer q ou ele dorme ou ele faz outra açao…
acopiara
Nesse caso vc tem que usar wait e notify!!
Boa Sorte!
Ricardo_Neves
Mas, fiz um teste com o notify tb, e pelo que vi, depois q ele entra no notify, ele num responde mais aos ifs.
Ou sera que to fazenu algo errado ?
valeu
W
WillyKocher
Bom seria melhor postar um codigo mais completo, pois do jeito que ta so executara uma vez mesmo( if ou o else ) ,e não se esquecça que se fizer referencia a Thread principal ( Thread.sleep ) o seu programa inteiro estara dormindo .
Seria bom mostrar a sua intrução de controle(LOOP) pra ta checando sempre esses ifs , e o instanciamento da thread que vc ta usando .
Ricardo_Neves
Neste caso a classe principal eh multithread, uma conexao com socktes, a principal, apos receber o conexao do cliente, intancia outra classe thread dentro da propria main, para verificar as mensagens enviadas, caso alguem envie uma mensagem especifica, o servidor da um aviso que sera desligado, mas quero q continue verificando as mensagens recebidas, pois caso ele digite outro comando, o processo de desconeccao do server, deve ser cancelado, ate se alguem souber uma forma melhor de fazer isso, melhor ainda.
Obrigado novamente
W
WillyKocher
bom ainda não intendi direito oque vc quer hehehehh , me desculpe vou deixar pra alguem mais “sabido” ai, bom mas se servir de algo fica um codigo que fiz pra algum trabalho da facul , uso sockets e threads ( para possiblitar + de 1 conexao ) , mas e bem simples tudo no console, flw…
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;publicclassServerextendsThread{Socketconexao;booleanautentiacao;publicServer(Sockets){this.conexao=s;}publicstaticvoidmain(String[]args){try{ServerSockets=newServerSocket(4444);while(true){System.out.print("Esperando alguem se conectar...");Socketconexao=s.accept();System.out.println(" Conectou!");// cria uma nova thread para tratar essa conexao Threadt=newServer(conexao);t.start();}}catch(Exceptione){}}publicvoidrun(){try{if(conexao.isClosed())System.out.println("connection lost");//PrintWriterout=newPrintWriter(conexao.getOutputStream(),true);BufferedReaderin=newBufferedReader(newInputStreamReader(conexao.getInputStream()));StringinputLine,outputLine;while((inputLine=in.readLine())!="fim"){System.out.println(inputLine);if(inputLine.equalsIgnoreCase("command")){//se digitar command no console faz algo...}if(inputLine.equalsIgnoreCase("/quit")){//se digitar /quit no console termina conexaoSystem.out.println("user: "+conexao.getRemoteSocketAddress()+" disconnected");out.println("kill");//envia sinal de kill para o clientebreak;}}in.close();out.close();conexao.close();}catch(IOExceptione){e.printStackTrace();}}}