Thread:
O que é Thread no java?
Thread é uma classe disponível no pacote "java.lang" que permite a criação de sequências de
instruções para serem executadas de forma autônoma e paralela durante o ciclo de um programa ou processo. Ou seja, Threads são usadas para realizar operações independentemente em segundo plano
Pra tentar ser mais especifico e menos detalhista, vamos declarar que uma ou
varias threads pode ser executadas em uma única aplicação .
Cada threads pode ser criada para gerenciar varias instruções em um único
processo(aplicativo).
O uso das Threads pode melhorar a performasse do aplicativo de maneira muito eficiente.
Por exemplo recebendo e enviando dados, criando estatísticas e gerenciando controladores...
Rodando apenas em 1 aplicativo e sem perder instabilidade e exigindo o mínimo da maquina.
A desvantagem apenas ocorre quando por algum motivo a Thread se comporta de maneira
inesperada criando deadlocks , lops ,bugs , erros no retorno e perdendo o processamento e
instabilidade na aplicação.
diagrama de ciclo de uma Thread java.
Apesar de ser um assunto muito complexo ,principalmente por cada S.O e linguagem de programação
ter suas próprias bibliotecas , métodos e classes para chamar uma Thread.
Vou tentar deixar um artigo bem simples e útil sobre Threads no JavaFX
...agora que sabemos que as Threads são necessárias para aplicações ricas e de alto nível
e que funcionam de maneiras paralelas para aumentar a eficiência e produtividade em um
aplicativo
Este vai ser um artigo de mais de 3 partes falando sobre Threads no JFX
Já podemos ver como elas se comportam em uma aplicação JavaFX.
Vou começar fazendo uma aplicação que vai criar duas Threads em um
processo não especificamente em Javafx ,neste exemplo é utilizado
o java.lang; disponível nos pacotes do JavaSE que não é importada no
codigo pelo fato de ser um pacote java.lang
Documentação
https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
O primeiro exemplo temos duas String para nomes onde vai ser armazenado
1 nome pra peugeot e pra citroen e uma String strRNomes também para o resultado das condições de
escolhas de nomes.
Mais dois int pra armazenar a quantidade de carros produzidos e um outro para resultado
dos cálculos de produção dos carros.
Então teremos duas Threads, uma vai calcular a quantidade de carros das montadoras
e outra vai definir qual foi a montadora que produziu mais automóveis .
1° Thered em funcionamento
repare.
...
...
Código aqui .
Olhe que no bloco do ArranqueONE a classe thread e instanciada com uma expressão lambda
ela cria as instruções e define as variáveis, mais não retorna resultados para as classes de controle .
quem vai fazer isso em especial nesta condição vai ser a Platform.runLater(()->{...instruções});
A labelOne pode ser acessada dentro do bloco através do método fornecido pela classe
javafx.application.*;
Que alias é quem fornece a JavaSE acesso a uma Aplicação JavaFX isso a torna um pacote importante para aplicações ricas com alto desempenho gráfico e de hardware.
também fornece a Thread uma resposta pela classe Platform utilizando um método com expreção lambda, Platform.runLater(()->{...instruções});
"em um outro momento iremos comentar sobre lambda ... quando disponível pode ser visualizado aqui"
mais informações sobre a classe Platform
https://docs.oracle.com/javase/8/javafx/api/javafx/application/Platform.html
Interface Runnable
A interface Runnable foi implementada a partir do java 8 com ela implementamos métodos para executar as instruções nas threads, ela pode ser manipulada de varias maneiras no Java.
É importante observar que existe maneiras de implementar uma classe Runnable e ao implementar a interface Runnable e fornecer uma implementação para o método run(), você pode criar objetos que representam tarefas que podem ser executadas em segundo plano.
...
...
No JavaFX é importante lembrar , sempre que uma aplicação for finalizada ,as Threads devem
ser finalizadas juntas anao ser que esta seja tarefa que precisa ser executada como prioridade.
Bem comum que algumas Threads passem despercebidos continuando seu funcionamento em segundo plano e alocando memorias mesmo com a aplicação finalizada, é uma ação, error ou pratica não recomendada... :D
Pra finalizar as threads que continuam abertas mesmo quando o aplicativo esta sendo finalizado
criando instabilidade e perda de performasse no S.O
Uma maneira de finaliza a thread principal da aplicação construída no javafx é
utilizar o Platform.exit();
repare
...
...
Codigo Aqui
Com este método ao clicar em finalizar as Threads são finalizadas junto a thread
Principal do aplicativo.
Neste próximo exemplo são adicionado 3 threads
1 vai fazer um laço de 1 a 10 outro de 10 a 20 e outro de 1 a 30
vai ser adicionado um sleep que vai funcionar como um Delay();
contando com a velocidade da threads em Millis();
O computador vai tentar balancear cada Thread ao ponto que todas
sejam executadas
...
...
Codigo Aqui
Encadeamento em Threads
No 4° exemplo uma lista de Threads a ser executadas.
encadeamento de threads seria criar uma Sequencia de threads para ser executadas
uma após outra , e sempre que uma thread for finalizada ela inicia a próxima thread
e claro neste caso ....respeitando um tempo definido e uma sequencia de repetições em cada Thread
...
...
código Aqui
neste momento vamos fazer uma ancora aqui
porque no próximo artigo vamos continuar comentando sobre Threads e Grupos de Threads para concluir tarefas o que muda é que nos próximo artigos vai ser mencionado apenas classes do JFX.
quando o artigo estiver disponível, pode ser visualizado aqui neste link
boa leitura.
Comentários
Postar um comentário