Ajude a Asast
Patrocinadores
Últimos assuntos
» Novo site para desportistas / New site for athletes
Sex Mar 17, 2017 8:31 am por Admin

» List files by date
Sex Mar 17, 2017 8:24 am por Admin

» RegExp - Add XXX to the begin of a String
Sex Nov 18, 2016 1:44 am por Admin

» RegExp - Add XXX to the end of a String
Sex Nov 18, 2016 1:38 am por Admin

» Great book about DOD programming
Sex Nov 11, 2016 6:59 am por Admin

» MESOS (Apache)
Qui Set 29, 2016 1:51 am por Admin

» Site de aluguer entre particulares
Sex Jul 01, 2016 3:01 am por Admin

» Noite das maravilhas - Nuit des merveilles
Sex Jul 01, 2016 2:54 am por Admin

» Site para procura de emprego no Luxemburgo
Qui Jun 30, 2016 7:13 am por Admin

AdSense
Contributo

Execução de método com timeout

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Execução de método com timeout

Mensagem  Admin em Qua Abr 21, 2010 2:52 am

Imagine que queira executar uma função que não pode ser modificada, que retorna um valor (um boolean por exemplo) e que pode demorar muito tempo a ser executada.
Pode ser útil implementar um timeout de forma a que o programa não fique bloqueado.

Aqui fica um exemplo de criar um mecanismo deste tipo:

Código:

...
FutureTask theTask = null;
final ReportResult resReport = new ReportResult();
try {
  // create new task
  theTask = new FutureTask<Object>(new Runnable() {
     public void run() {
        try {
          boolean taskresult = client.execute();
          resReport.setOk(true);
          resReport.setResult(taskresult);
       } catch(Exception e) {
          resReport.setOk(false);
          resReport.setErrorMessage("Exception - " + e.getMessage());
       }
        }
  }, null);
         
  // start task in a new thread
  new Thread(theTask).start();
         
  // wait for the execution to finish, timeout after 10 secs
  theTask.get(10000, TimeUnit.MILLISECONDS);
         
} catch (TimeoutException e) {
  throw new TimeoutException();
}
      
// Check if the report execution was ok
if(resReport.isOk())
  result = resReport.getResult();
else {
  throw new Exception(resReport.getErrorMessage());

...

avatar
Admin
Admin

Mensagens : 596
Data de inscrição : 21/01/2008
Idade : 40

Ver perfil do usuário http://forum-informatico.forumeiros.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum