Tópicos Em Java
Hoje, vamos discutir Java Threads com exemplos , visando satisfazer a sede de conhecimento do leitor.
Tópicos Java
Utilizando Java Threads , os threads possibilitam a execução de vários processos simultaneamente, aumentando a eficiência de um programa.
Tarefas complexas podem ser executadas em segundo plano sem interferir no programa principal usando threads.
Criar thread Java
Para criar um thread em Java , existem dois métodos.
Ao lidar com Java Threads , ele é criado substituindo o método run() da classe Thread:
Sintaxe para estender:
public class Main extends Thread { public void run(){ System.out.println("We are learning about Java Threads"); } }
A interface Runnable também pode ser usada para criar um thread:
Sintaxe para Implementar
public class Main implements Runnable { public void run(){ System.out.println("A Java Threads can also be created by implementing the runable interface"); } }
Executar threads Java
Java Threads oferece suporte a threads em execução criando instâncias de classes que estendem a classe Thread e chamando seu método start() .
Extend Example:1
Extend Example:2
Supondo que a classe implemente a interface Runnable , o threadread pode ser executado passando a instância da classe para o construtor do objeto Thread e, em seguida, chamando o método start() do objeto thread:
Implement Example:1
Implement Example:2
Uma diferença notável é que se uma classe estende a classe Thread, ela não pode estender mais nada, mas se implementa a interface Runnable, também pode estender de outras classes, como:
Problema de simultaneidade
Não há como determinar em que ordem o código será executado porque os threads são executados simultaneamente com outras partes do programa.
Os valores das variáveis são imprevisíveis quando as threads e o programa principal leem e escrevem as mesmas variáveis ao mesmo tempo. Os conflitos resultantes disso são chamados de problemas de simultaneidade .
Aqui está um exemplo de código, onde a variável mrx tem um valor imprevisível:
Example:
O exemplo dado ilustra a diferença no valor da variável ample ao atribuir o operador de decremento e o operador de incremento a ela:
Example:
O número de atributos compartilhados entre threads deve ser mantido o mais baixo possível para evitar problemas de simultaneidade.
O método isAlive() do encadeamento pode ser usado para determinar se o encadeamento terminou a execução antes de usar quaisquer atributos que ele possa modificar.
Esta pode ser uma solução se os atributos precisarem ser compartilhados entre as threads.
Problemas de simultaneidade podem ser evitados usando o método isAlive() :
isAlive() Example:1
isAlive Example:2
Benefícios do Java Threads
Consumo eficiente de memória:
Todos os threads dentro de um processo compartilham o mesmo espaço de endereço. Portanto, eles não usam memória compartilhada e várias linhas de código podem ser executadas sem consumir memória adicional.
Melhor utilização de sistemas multiprocessadores:
O uso de encadeamentos permite que um computador/laptop utilize sua arquitetura de multiprocessador em uma extensão mais ampla, pois vários processadores são permitidos na execução de vários códigos de encadeamento por vez.