forum-informatico
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Ajude a Asast
Patrocinadores
Últimos assuntos
» Artigo ethereum
Execução de método com timeout EmptyTer Set 24, 2019 1:16 pm por jpmartins

» Artigo Bitcoin
Execução de método com timeout EmptyTer Set 24, 2019 1:13 pm por jpmartins

» Novo site para desportistas / New site for athletes
Execução de método com timeout EmptyTer Dez 04, 2018 8:19 am por Admin

» Check used port with the command line
Execução de método com timeout EmptyTer Dez 04, 2018 8:10 am por Admin

» Check the port where mariaDB is running
Execução de método com timeout EmptySeg Dez 03, 2018 4:59 am por Admin

» Check the linux version
Execução de método com timeout EmptySeg Dez 03, 2018 3:12 am por Admin

» Granting rights to a database for a user
Execução de método com timeout EmptyQui Nov 29, 2018 2:04 am por Admin

» Create new user
Execução de método com timeout EmptyQui Nov 29, 2018 2:01 am por Admin

» Change level of password security level
Execução de método com timeout EmptyQui Nov 29, 2018 1:59 am por Admin

AdSense
Contributo

Execução de método com timeout

Ir para baixo

Execução de método com timeout Empty Execução de método com timeout

Mensagem  Admin 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());

...

Admin
Admin
Admin

Mensagens : 607
Data de inscrição : 21/01/2008
Idade : 46

https://forum-informatico.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos