Diferença entre Runnable e Thread

Diferença de chave - Runnable vs Thread
 

Um programa em execução é conhecido como um processo. O processo pode ser dividido em vários subprocessos. Por exemplo, o Microsoft Word é um processo. Ao mesmo tempo, verifica o erro de ortografia e gramática. Isso é um subprocesso. Esses subprocessos são conhecidos como threads. Multithreading é o processo de executar vários threads simultaneamente. Aplicativos encadeados podem ser criados usando diferentes linguagens de programação. Runnable e Thread estão associados à programação Java. Existem dois métodos em Java para criar um encadeamento implementando uma interface Runnable ou estendendo a classe Thread. Ao implementar o Runnable, muitos threads podem compartilhar o mesmo objeto de thread enquanto na classe Extending Thread, cada thread tem um objeto exclusivo associado a ele.. Esse é o diferença chave entre Runnable e Thread.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é executável
3. O que é Thread
4. Semelhanças entre Runnable e Thread
5. Comparação lado a lado - Runnable vs Thread em forma de tabela
6. Resumo

O que é executável?

Um thread passa por alguns estados. O "novo" é o início do ciclo de vida da rosca. Depois que o método start () chama um novo thread, ele se torna executável. Se o planejador de encadeamentos seleciona o encadeamento, ele transita para o estado de execução. O encadeamento está aguardando o estado se esse encadeamento está aguardando outro encadeamento executar uma tarefa. Depois que o thread conclui o trabalho, ele passa para o estado de término.

Um encadeamento pode ser implementado usando a interface Runnable. Consulte o programa abaixo.

Figura 01: Programa Java para criar um encadeamento usando a interface Runnable

De acordo com o programa acima, a classe Runnable Demo implementa a interface Runnable. O método run () está dentro da classe que implementa a interface Runnable. É o ponto de entrada para o encadeamento. A lógica está no método run (). No programa principal, um segmento é criado definindo um objeto que instanciado da classe Runnable Demo. É t1. O método start () é chamado usando t1.

Consulte o programa abaixo.

Figura 02: Programa Java para criar um encadeamento para executar um loop, implementando a interface Runnable

De acordo com o exemplo acima, a classe Runnable Demo implementa a interface Runnable. A lógica a ser executada usando o encadeamento é escrita no método run (). No programa principal, um segmento é criado definindo um objeto que instanciado da classe Runnable Demo. É t1. Em seguida, o método start () é chamado usando t1.

O que é Thread?

O outro método de criar um thread é estendendo a classe Thread. Consiste em três etapas. Primeiro é declarar a classe como estendendo a classe Thread. Depois, o método run () deve ser escrito. Possui a sequência de etapas que o encadeamento deve executar. Por fim, o objeto de encadeamento é criado e o método start () é chamado para iniciar a execução do encadeamento. Consulte o programa abaixo.

Figura 03: Programa Java que estende a classe Thread

De acordo com o programa acima, a classe MyThread estende a classe Thread. Ele substitui o método de execução. O método run () contém a lógica a ser executada pelo encadeamento. É o ponto de entrada para o encadeamento. Em seguida, o objeto de thread é criado. É thread1. O encadeamento é iniciado usando o método start (). Ele executará uma chamada para o método run ().

Um programa de exemplo de duas classes estendendo a classe Thread é o seguinte.

Figura 04: Programa Java com duas classes que estendem a classe Thread

De acordo com o programa acima, as classes A e B estão estendendo a classe Thread. Ambas as classes têm sua implementação do método run (). O thread principal é o que executa o método main (). Antes que o thread principal morra, ele cria e inicia o thread1 e o thread2. Quando o encadeamento principal chegou ao final do método principal, três encadeamentos estavam sendo executados em paralelo. Não há uma ordem específica na qual os threads fornecem saída. Depois que o encadeamento é iniciado, é difícil decidir a ordem em que eles serão executados. Eles correm de forma independente.

Quais são as semelhanças entre Runnable e Thread?

  • Ambos estão usando para criar um encadeamento em Java.

Qual é a diferença entre Runnable e Thread?

Runnable vs Thread

Runnable é uma interface em Java para criar um encadeamento que permite que muitos encadeamentos compartilhem o mesmo objeto de encadeamento. O encadeamento é uma classe em Java para criar um encadeamento em que cada encadeamento possui um objeto exclusivo associado a ele.
 Memória
Em Runnable, vários threads compartilham o mesmo objeto, portanto, requerem menos memória. Na classe Thread, cada thread cria um objeto exclusivo, portanto, requer mais memória.
Extensão da capacidade
Após implementar a interface Runnable, ele pode estender uma classe. Heranças múltiplas não são suportadas em Java. Após estender a classe Thread, ela não pode estender nenhuma outra classe.
 Manutenção do código
A interface executável torna o código mais sustentável. Na classe Thread, a manutenção é demorada.

Resumo - Executável vs Thread 

Um processo é dividido em vários subprocessos para executar várias tarefas ao mesmo tempo. Esses subprocessos são conhecidos como threads. A instanciação de um encadeamento pode ser feita implementando a interface Runnable ou estendendo a classe Thread. É fácil estender a classe Thread, mas não é uma prática melhor de Programação Orientada a Objetos. Ao implementar o Runnable, muitos threads podem compartilhar o mesmo objeto de thread enquanto estendem a classe Thread, cada thread tem um objeto exclusivo associado a ele. Essa é a diferença entre Runnable e Thread. Na classe Thread, a criação de vários objetos pode consumir mais memória.

Faça o download do PDF do Runnable vs Thread

Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre Runnable e Thread

Referência:

1.tutorialspoint.com. "Multithreading Java". The Point, disponível aqui 
2.Pramodbablad. “Estende o Thread Vs Implementable Runnable em Java.” Conceito de Java do dia, 11 de novembro de 2016. Disponível aqui
3. Maneiras de criar um thread no Java Multithreading | Tutorial Java principal | Estudo à noite. Disponivel aqui