Diferència entre Runnable i Thread

Taula de continguts:

Diferència entre Runnable i Thread
Diferència entre Runnable i Thread

Vídeo: Diferència entre Runnable i Thread

Vídeo: Diferència entre Runnable i Thread
Vídeo: #88 Runnable vs Thread in Java 2024, Setembre
Anonim

Diferència clau: executable vs fil

Un programa en execució es coneix com a procés. El procés es pot dividir en diversos subprocessos. Per exemple, Microsoft Word és un procés. Al mateix temps, verifica l'error ortogràfic i la gramàtica. Això és un subprocés. Aquests subprocessos es coneixen com a fils. El multithreading és el procés d'execució de diversos fils simultàniament. Les aplicacions roscades es poden crear utilitzant diferents llenguatges de programació. Runnable i Thread estan associats amb la programació Java. Hi ha dos mètodes a Java per crear un fil implementant una interfície Runnable o ampliant la classe Thread. Quan s'implementa Runnable, molts fils poden compartir el mateix objecte de fil mentre que a la classe Extending Thread, cada fil té un objecte únic associat. Aquesta és la diferència clau entre Runnable i Thread.

Què es pot executar?

Un fil passa per alguns estats. El "nou" és l'inici del cicle de vida del fil. Després que el mètode start() crida a un fil nou, es pot executar. Si el programador de fils selecciona el fil, aquest passa a l'estat en execució. El fil està esperant l'estat si aquest fil està esperant que un altre fil realitzi una tasca. Un cop el fil ha acabat el treball, passa a l'estat de terminació.

Un fil es pot implementar mitjançant la interfície Runnable. Consulteu el programa següent.

Diferència entre Runnable i Thread
Diferència entre Runnable i Thread

Figura 01: Programa Java per crear un fil mitjançant la interfície Runnable

Segons el programa anterior, la classe Runnable Demo implementa la interfície Runnable. El mètode run() es troba dins de la classe que implementa la interfície Runnable. És el punt d'entrada del fil. La lògica està en el mètode run(). Al programa principal, es crea un fil definint un objecte que s'instancia a partir de la classe Runnable Demo. És t1. El mètode start() s'anomena amb t1.

Consulteu el programa següent.

Diferència entre Runnable i Thread_Figura 02
Diferència entre Runnable i Thread_Figura 02

Figura 02: programa Java per crear un fil per executar un bucle, mitjançant la implementació de la interfície Runnable

Segons l'exemple anterior, la classe Runnable Demo implementa la interfície Runnable. La lògica a executar amb el fil s'escriu amb el mètode run(). Al programa principal, es crea un fil definint un objecte que s'instancia a partir de la classe Runnable Demo. És t1. Aleshores, el mètode start() s'anomena amb t1.

Què és Thread?

L' altre mètode per crear un fil és ampliant la classe Thread. Consta de tres passos. El primer és declarar la classe com a extensió de la classe Thread. Després, s'ha d'escriure el mètode run(). Té la seqüència de passos que ha d'executar el fil. Finalment, es crea l'objecte thread i es crida al mètode start() per iniciar l'execució del fil. Consulteu el programa següent.

Diferència entre Runnable i Thread_Figura 03
Diferència entre Runnable i Thread_Figura 03

Figura 03: programa Java que amplia la classe Thread

Segons el programa anterior, la classe MyThread amplia la classe Thread. Invalida el mètode d'execució. El mètode run() conté la lògica que ha d'executar el fil. És el punt d'entrada al fil. Aleshores es crea l'objecte thread. És el fil 1. El fil s'inicia amb el mètode start(). Executarà una crida al mètode run().

Un exemple de programa de dues classes que amplia la classe Thread és el següent.

Diferència clau entre Runnable i Thread
Diferència clau entre Runnable i Thread

Figura 04: programa Java amb dues classes que amplien la classe Thread

Segons el programa anterior, tant la classe A com la B estan ampliant la classe Thread. Ambdues classes tenen la seva implementació del mètode run(). El fil principal és el que executa el mètode main(). Abans que mori el fil principal, crea i inicia thread1 i thread2. Quan el fil principal arriba al final del mètode principal, tres fils s'executen en paral·lel. No hi ha cap ordre específic en què els fils donen sortida. Un cop iniciat el fil, és difícil decidir l'ordre que executaran. Funcionen de manera independent.

Quines són les similituds entre Runnable i Thread?

Tots dos utilitzen per crear un fil a Java

Quina diferència hi ha entre executable i fil?

Runnable vs Thread

Runnable és una interfície de Java per crear un fil que permet que molts fils comparteixin el mateix objecte de fil. El fil és una classe en Java per crear un fil on cada fil té un objecte únic associat.
Memòria
A Runnable, diversos fils comparteixen el mateix objecte, de manera que requereixen menys memòria. A la classe Thread, cada fil crea un objecte únic i, per tant, requereix més memòria.
Ampliació de la capacitat
Després d'implementar la interfície Runnable, pot ampliar una classe. Les herències múltiples no s'admeten a Java. Després d'ampliar la classe Thread, no pot ampliar cap altra classe.
Manteniment del codi
La interfície executable fa que el codi sigui més fàcil de mantenir. A la classe Thread, el manteniment requereix molt de temps.

Resum: executable vs fil

Un procés es divideix en diversos subprocessos per realitzar diverses tasques al mateix temps. Aquests subprocessos es coneixen com a fils. La instància d'un fil es pot fer implementant la interfície Runnable o ampliant la classe Thread. És fàcil ampliar la classe Thread, però no és una millor pràctica de programació orientada a objectes. Quan s'implementa Runnable, molts fils poden compartir el mateix objecte de fil mentre que a l'ampliació de la classe Thread, cada fil té un objecte únic associat. Aquesta és la diferència entre Runnable i Thread. A la classe Thread, la creació d'objectes múltiples pot consumir més memòria.

Descarregueu el PDF de Runnable vs Thread

Podeu baixar la versió PDF d'aquest article i utilitzar-la per a finalitats fora de línia segons la nota de citació. Si us plau, descarregueu la versió PDF aquí Diferència entre runnable i thread

Recomanat: