Execução de método com timeout
Página 1 de 1
Execução de método com timeout
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:
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());
...
Tópicos semelhantes
» Execução de classe a partir de ficheiro JAR
» Método para reduzir uma imagem
» Execução "automática" de funções
» Método para reduzir uma imagem
» Execução "automática" de funções
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Ter Set 24, 2019 1:16 pm por jpmartins
» Artigo Bitcoin
Ter Set 24, 2019 1:13 pm por jpmartins
» Novo site para desportistas / New site for athletes
Ter Dez 04, 2018 8:19 am por Admin
» Check used port with the command line
Ter Dez 04, 2018 8:10 am por Admin
» Check the port where mariaDB is running
Seg Dez 03, 2018 4:59 am por Admin
» Check the linux version
Seg Dez 03, 2018 3:12 am por Admin
» Granting rights to a database for a user
Qui Nov 29, 2018 2:04 am por Admin
» Create new user
Qui Nov 29, 2018 2:01 am por Admin
» Change level of password security level
Qui Nov 29, 2018 1:59 am por Admin