Belangrijk verschil - Runnable vs Thread
Een programma in uitvoering staat bekend als een proces. Het proces kan worden onderverdeeld in meerdere deelprocessen. Microsoft Word is bijvoorbeeld een proces. Tegelijkertijd controleert het op spelfouten en grammatica. Dat is een deelproces. Deze subprocessen worden threads genoemd. Multithreading is het proces waarbij meerdere threads tegelijk worden uitgevoerd. Threaded-applicaties kunnen worden gebouwd met behulp van verschillende programmeertalen. Runnable en Thread worden geassocieerd met Java-programmering. Er zijn twee methoden in Java om een thread te maken door een Runnable-interface te implementeren of de Thread-klasse uit te breiden. Bij het implementeren van Runnable kunnen veel threads hetzelfde thread-object delen, terwijl in de Extending Thread-klasse aan elke thread een uniek object is gekoppeld. Dat is het belangrijkste verschil tussen Runnable en Thread.
Wat is uitvoerbaar?
Een draad loopt door sommige staten. Het "nieuwe" is het begin van de levenscyclus van de draad. Nadat de methode start() een nieuwe thread aanroept, wordt deze uitvoerbaar. Als de threadplanner de thread selecteert, gaat deze over naar de actieve status. De thread wacht op de status als die thread wacht op een andere thread om een taak uit te voeren. Nadat de thread het werk heeft voltooid, gaat deze naar de beëindigingsstatus.
Een thread kan worden geïmplementeerd met behulp van de Runnable-interface. Raadpleeg het onderstaande programma.
Figuur 01: Java-programma om een thread te maken met behulp van een uitvoerbare interface
Volgens het bovenstaande programma implementeert de klasse Runnable Demo de Runnable-interface. De methode run() bevindt zich in de klasse die de Runnable-interface implementeert. Het is het ingangspunt voor de draad. De logica zit in de methode run(). In het hoofdprogramma wordt een thread gemaakt door een object te definiëren dat is geïnstantieerd vanuit de klasse Runnable Demo. Het is t1. De methode start() wordt aangeroepen met t1.
Raadpleeg het onderstaande programma.
Figuur 02: Java-programma om een thread te maken om een lus uit te voeren, door de uitvoerbare interface te implementeren
Volgens het bovenstaande voorbeeld implementeert de klasse Runnable Demo de Runnable-interface. De logica die moet worden uitgevoerd met behulp van de thread is geschreven in de methode run(). In het hoofdprogramma wordt een thread gemaakt door een object te definiëren dat is geïnstantieerd vanuit de klasse Runnable Demo. Het is t1. Vervolgens wordt de methode start() aangeroepen met t1.
Wat is Thread?
De andere methode om een thread te maken is door de Thread-klasse uit te breiden. Het bestaat uit drie stappen. De eerste is om de klasse te declareren als uitbreiding van de Thread-klasse. Daarna moet de methode run() worden geschreven. Het heeft de volgorde van stappen die de thread moet uitvoeren. Ten slotte wordt het thread-object gemaakt en wordt de methode start() aangeroepen om de uitvoering van de thread te starten. Raadpleeg het onderstaande programma.
Figuur 03: Java-programma dat de Thread-klasse uitbreidt
Volgens het bovenstaande programma breidt de MyThread-klasse de Thread-klasse uit. Het overschrijft de run-methode. De methode run() bevat de logica die door de thread moet worden uitgevoerd. Het is het toegangspunt tot de draad. Vervolgens wordt het thread-object gemaakt. Het is draad 1. De thread wordt gestart met behulp van de methode start(). Het zal een aanroep uitvoeren om de methode run() uit te voeren.
Een voorbeeldprogramma van twee klassen die de Thread-klasse uitbreiden is als volgt.
Figuur 04: Java-programma met twee klassen die de Thread-klasse uitbreiden
Volgens het bovenstaande programma breiden zowel klasse A als B de Thread-klasse uit. Beide klassen hebben hun implementatie van de methode run(). De hoofdthread is die de methode main() uitvoert. Voordat de hoofdthread sterft, wordt thread1 en thread2 gemaakt en gestart. Tegen de tijd dat de hoofdthread het einde van de hoofdmethode heeft bereikt, lopen er drie threads parallel. Er is geen specifieke volgorde waarin de threads output geven. Als de thread eenmaal is gestart, is het moeilijk om de volgorde te bepalen die ze zullen uitvoeren. Ze draaien onafhankelijk.
Wat zijn de overeenkomsten tussen Runnable en Thread?
Beide gebruiken om een thread in Java te maken
Wat is het verschil tussen uitvoerbaar en draad?
Uitvoerbaar versus thread |
|
Runnable is een interface in Java om een thread te maken waarmee veel threads hetzelfde thread-object kunnen delen. | De thread is een klasse in Java om een thread te maken waarbij aan elke thread een uniek object is gekoppeld. |
Geheugen | |
In Runnable delen meerdere threads hetzelfde object, waardoor er minder geheugen nodig is. | In de Thread-klasse creëert elke thread een uniek object en vereist daarom meer geheugen. |
Bekwaamheid uitbreiden | |
Na het implementeren van de Runnable-interface, kan het een klasse uitbreiden. | Meerdere overervingen worden niet ondersteund in Java. Na uitbreiding van de Thread-klasse kan deze geen andere klasse uitbreiden. |
Onderhoudbaarheid van de code | |
Uitvoerbare interface maakt code beter onderhoudbaar. | In de Thread-klasse is onderhoud tijdrovend. |
Samenvatting – Uitvoerbaar versus Thread
Een proces is verdeeld in meerdere subprocessen om meerdere taken tegelijkertijd uit te voeren. Deze subprocessen worden threads genoemd. Het starten van een thread kan worden gedaan door de Runnable-interface te implementeren of door de Thread-klasse uit te breiden. Het is gemakkelijk om de klasse Thread uit te breiden, maar het is geen betere oefening voor objectgeoriënteerd programmeren. Bij het implementeren van Runnable kunnen veel threads hetzelfde thread-object delen, terwijl bij het uitbreiden van de Thread-klasse aan elke thread een uniek object is gekoppeld. Dat is het verschil tussen Runnable en Thread. In de Thread-klasse kan het maken van meerdere objecten meer geheugen in beslag nemen.
Download de PDF van Runnable vs Thread
U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden volgens de citatienota. Download hier de PDF-versie. Verschil tussen uitvoerbaar en thread