Threads em Javafx pt.2 construindo uma tarefa task
o que é uma Task?
Task é uma classe JavaFX que esta no pacote JavaFX.Concurrent .*;
esta instancia realiza tarefas em segundo plano, ela é iniciada por uma Thread
ou utilizar classes concurrent do pacote java.*; ou javafx.*; é capaz de realizar
uma interface para tarefas em segundo plano de um aplicativo JavaFX...
Algumas classes e métodos serão comentados um pouco neste artigo.
A Task e as classes necessárias para inicializa-la e monitora-la são varias
e são muitas possibilidades no desenvolvimento de uma aplicação com tarefa
utilizando Thread ,Service e Worker.
Assim como uma Thread e suas subclasses ,algumas ate explicadas nos artigos
passados outros fornecido neste artigo a Task é uma classe abstrata ou seja ela implementa
um método abstrato chamado call();
Por este método você pode realizar a logica da tarefa em uma subclasse do Task que é retornada
um tipo de dados do objeto.
Você pode verificar os métodos mais comuns na própria documentação da classe Task
Documentação da classe Task AQUI
Repare o diagrama do ciclo de uma Task;
Uma tarefa Task pode sim manter a tarefa em segundo plano durante a aplicação e fora da
aplicação mais não depois que a aplicação for finalizada diferente de uma thread como já vimos.
Em algumas condições esta tarefa pode impedir o método updateMensenger() ou updateValue()
e travar a tela inicial ou simplesmente toda aplicação, alocando memoria e criando instabilidade
as vezes ate impedindo o processo do aplicativo de ser finalizado
por isso podemos utilizar sim a thread do pacote java.lang ou classes de pacotes Concurrent do javafx
como por exemplo o "Service ou Worker" utilizado no java ou Javafx ate porque agora as bibliotecas
ja estão atualizadas e disponível a toda plataforma java melhorando ainda mais com recursos
de rede, web ,hardware e gráficos além soluções para dispositivos moveis...
inclusive nas sdk's anteriores a jfx2...
Pode utilizar como alternativa algumas classes como por exemplo o ExecutorService
ExecutorService porque além de ser de um pacote do Java.Util.*; também, pode executar uma tarefa Task
organizando cada Task no momento certo que elas devem ser executadas .
O Service é uma classe nativa do JFX e pode oferecer vários métodos abstratos para desenvolver
um aplicativo utilizado o Task ou Threads
Você pode ver a documentação dos pacotes Lang Concurrent e JavaFX Concurrent contidos neste artigo
repare cada instancia da classes
Utilizando Thread
...
...
ExecutorService.
diagrama.
Utilizando o ExecutorService para gerenciar uma tarefa Task,
configura uma therad separada apenas para Task que vai ser executada no momento
além disso a classe pode manipular varias Tasks simultâneas em segundo plano
repare utilizando o ExecutorService que apesar de ser um pacote java.util.concurrent
consegue o basicamente mesmo resultado.
...
...
Runnable ou Platform
ciclo.
Porem uma alternativa melhor nesta situação e talvez mais ágil seria a própria Platform.rum later() do Javafx , porque ela além de gerenciar as próprias threads em segundo plano de uma aplicação javafx
ela também pode fazer esta chamativa da classe task para executar diversas classes e métodos
Documentação Platform Aqui
Documentaçao Runnable Aqui
repare
...
...
Service
diagrama.
...
...
Service entre todas opções seria a melhor ,por ser uma claSse javafx ela
tem uma estrutura mais completa para poder manusear uma Task ou outras classes
derivadas do pacote javafx.concurrrent .
Neste próximo exemplo vai como base esta classe .
documentação Aqui_JFX2 , Aqui_JFX17
Mais seguindo os comentários vamos a aplicação...
este exemplo vai fazer uma leitura de 0 a 10000 e irar imprimir.
Também dentro de uma condição de processamento irar imprimir os números
divisíveis por 50 ...ate completar o ciclo do Service;
vou manter os dois exemplos repare que vai ser utilizado
alguns métodos de update , valores, title, e mensagens do Task e do Service
primeiro uma breve explicação de como funciona uma Task
Task <Interger> task=new Task<Void>() {...metodos abstratos};
"instancia de classe <tipo do objeto de retorno> variavel da instancia = new "instancia com um bloco contstrutor"
seguindo na subclasse da Task estar o método construtor call(){} onde é criado o código que vai rodar uma tarefa.
Aplicação utilizando Service.
...
...
por ultimo neste artigo vamos falar um pouco sobre Worker
pra tentar simplificar o máximo esta classe vamos ter em mente que uma thread criada para aplicativos javafx.
Porem uma classe Worker não é uma classe Thread apesar de funcionarem de maneiras parecidas
elas não são mesma coisa porem uma classe Text e Label podemos dizer que tem a mesma função não é mesmo?
A Worker implementa métodos principalmente através das classes Task e Service facilitado muito o Trabalho Task e outras classes do JavaFX
fornecendo métodos abstratos e de retorno de objetos
repare neste diagrama
o Worker pode retornar algumas resposta de retorno como condições de processamento
por exemplo ready, failed ,cancelled, suceeeded ,running
nesta próxima aplicação vou fazer alguns métodos principais no Worker
...
...
Bom estes são alguns métodos para manusear uma classe de tarefas em segundo plano com JavaFX
No próximo e ultimo artigo vai ter um aplicativo especial utilizando algumas classes contidas neste e nos artigos anteriores
faça uma boa leitura.
Downloads:
Código fontes : Aqui
Projetos : Aqui
Comentários
Postar um comentário