CodeGym/Cursos Java/Módulo 3/Executores: objetos executáveis

Executores: objetos executáveis

Disponível

6.1 Objetos executáveis

Então chegamos à maior parte do pacote. Descreverá interfaces para execução de tarefas assíncronas com capacidade de obtenção de resultados por meio das interfaces Future e Callable, bem como serviços e fábricas para criação de pools de threads: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool.

Para um melhor entendimento, vamos fazer uma pequena decomposição de interfaces e classes.

6.2 Realizações de objetos executáveis

Future<V>é uma interface maravilhosa para obter os resultados de uma operação assíncrona. O método-chave aqui é o método get, que bloqueia o thread atual (com ou sem um tempo limite) até que uma operação assíncrona em outro thread seja concluída. Existem também métodos adicionais para cancelar a operação e verificar o status atual. A classe FutureTask é frequentemente usada como uma implementação.

RunnableFuture<V>- se Future for uma interface para a API do cliente, a interface RunnableFuture já será usada para iniciar a parte assíncrona. A conclusão bem-sucedida do método run() encerra a operação assíncrona e permite que os resultados sejam recuperados por meio do método get.

Callable<V>- Um análogo estendido da interface Runnable para operações assíncronas. Permite retornar um valor digitado e lançar uma exceção verificada. Mesmo que essa interface não tenha um método run(), muitas classes java.util.concurrent o suportam junto com Runnable.

FutureTask<V>— implementação da interface Future/RunnableFuture. Uma operação assíncrona é tomada como entrada para um dos construtores na forma de objetos Runnable ou Callable. A própria classe FutureTask foi projetada para ser iniciada em um thread de trabalho, por exemplo, por meio de new Thread(task).start() ou por meio de ThreadPoolExecutor. Os resultados de uma operação assíncrona são recuperados por meio do método get(...).

Delayed- usado para tarefas assíncronas que devem iniciar no futuro, bem como em DelayQueue. Permite definir o tempo antes do início de uma operação assíncrona.

ScheduledFuture<V>- uma interface de marcador que combina as interfaces Future e Delayed.

RunnableScheduledFuture<V>- uma interface que combina RunnableFuture e ScheduledFuture. Além disso, você pode especificar se a tarefa é uma tarefa única ou deve ser executada em uma frequência especificada.

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário