freeCodeCamp/guide/portuguese/java/multithreading/index.md

35 lines
2.0 KiB
Markdown
Raw Normal View History

---
title: Multithreading
localeTitle: Multithreading
--- ## Multithreading
Multithreading é um processo de execução de vários processos simultaneamente. Java inicia o programa com um thread principal e outros threads são incluídos no thread principal sempre que qualquer usuário o cria. thread principal é o primeiro thread do usuário em qualquer programa Java. Além disso, a JVM garante que todos os encadeamentos do usuário sejam fechados antes do término do programa.
Um thread tem vantagens e desvantagens.
## Vantagens:
* Executando código independentemente de outros segmentos.
* Criação de um design modular.
## Desvantagens:
Condições de corrida e Deadlocks se os segmentos não estiverem sincronizados corretamente.
Tópicos podem ser divididos em duas classes:
* Threads do Usuário
* Threads Daemon
Um thread pode ser criado de duas maneiras:
1. implementando a interface Runnable: Existe apenas um método na interface Runnable, isto é, public void run (). A implementação desse método garantirá que, sempre que esse encadeamento iniciar o código dentro de run (), seja executado.
2. estendendo a classe de segmento. Esta classe também contém public void run () que precisamos sobrescrever para executar nosso próprio código. A desvantagem de usar esse método é que temos uma superclasse em Thread e não podemos estender nenhuma outra classe que possamos desejar.
O código para ambos pode ser encontrado aqui: http://ide.geeksforgeeks.org/k7GjcA.
Você notará que, se esse código for executado várias vezes, os resultados poderão ser diferentes. e isso é decidido pelo sistema operacional no qual ele é executado. O sistema operacional pode escolher qualquer thread de um estado executável e pode executá-lo. Nós não temos controle sobre isso. Se houver vários encadeamentos no estado executável (pronto para execução), qualquer um pode ser selecionado. Ainda não depende de prioridade.
Mais detalhes: https://www.ntu.edu.sg/home/ehchua/programming/java/J5e\_multithreading.html