nyckelskillnad – körbar vs tråd
Ett program som körs är känt som en process. Processen kan delas upp i flera delprocesser. Till exempel är Microsoft Word en process. Samtidigt kontrollerar den efter stavfel och grammatik. Det är en delprocess. Dessa delprocesser är kända som trådar. Multithreading är processen att köra flera trådar samtidigt. Trådade applikationer kan byggas med olika programmeringsspråk. Runnable och Thread är associerade med Java-programmering. Det finns två metoder i Java för att skapa en tråd genom att implementera ett körbart gränssnitt eller utöka klassen Thread. När du implementerar Runnable kan många trådar dela samma trådobjekt medan i klassen Extending Thread har varje tråd ett unikt objekt kopplat till sig. Det är den viktigaste skillnaden mellan Runnable och Thread.
Vad är körbart?
En tråd går genom vissa stater. Det "nya" är början på trådens livscykel. Efter att start()-metoden anropar en ny tråd, blir den körbar. Om trådschemaläggaren väljer tråden går den över till körläge. Tråden väntar på tillståndet om den tråden väntar på att en annan tråd ska utföra en uppgift. När tråden har slutfört arbetet går den till avslutningsläget.
En tråd kan implementeras med hjälp av Runnable-gränssnittet. Se programmet nedan.
Figur 01: Java-program för att skapa en tråd med körbart gränssnitt
I enlighet med ovanstående program implementerar klassen Runnable Demo det Runnable-gränssnittet. Metoden run() är inuti klassen som implementerar Runnable-gränssnittet. Det är ingången till tråden. Logiken finns i run()-metoden. I huvudprogrammet skapas en tråd genom att definiera ett objekt som instansierats från klassen Runnable Demo. Det är t1. Start()-metoden anropas med t1.
Se programmet nedan.
Figur 02: Java-program för att skapa en tråd för att köra en loop, genom att implementera det körbara gränssnittet
I enlighet med ovanstående exempel implementerar klassen Runnable Demo Runnable-gränssnitt. Logiken för att köra med tråden skrivs i metoden run(). I huvudprogrammet skapas en tråd genom att definiera ett objekt som instansierats från klassen Runnable Demo. Det är t1. Sedan anropas start()-metoden med hjälp av t1.
Vad är tråd?
Den andra metoden för att skapa en tråd är att utöka klassen Thread. Den består av tre steg. Det första är att deklarera klassen som en förlängning av trådklassen. Efteråt ska run()-metoden skrivas. Den har den sekvens av steg som tråden ska utföra. Slutligen skapas trådobjektet och metoden start() anropas för att initiera exekveringen av tråden. Se programmet nedan.
Figur 03: Java-program som utökar trådklass
Enligt programmet ovan utökar MyThread-klassen Thread-klassen. Det åsidosätter körmetoden. Metoden run() innehåller logiken som ska exekveras av tråden. Det är ingången till tråden. Sedan skapas trådobjektet. Det är tråd1. Tråden startas med metoden start(). Den kommer att köra ett anrop till run()-metoden.
Ett exempel på två klasser som utökar Thread-klassen är följande.
Figur 04: Java-program med två klasser som utökar trådklassen
Enligt programmet ovan utökar både klass A och B Trådklassen. Båda klasserna har sin implementering av metoden run(). Huvudtråden är den som exekverar metoden main(). Innan huvudtråden dör skapar och startar den tråd1 och tråd2. När huvudtråden nådde slutet av huvudmetoden löper tre trådar parallellt. Det finns ingen specifik ordning i vilken trådarna ger utdata. När tråden väl har startat är det svårt att bestämma vilken ordning de ska utföra. De körs oberoende.
Vilka är likheterna mellan körbar och tråd?
Båda använder för att skapa en tråd i Java
Vad är skillnaden mellan körbar och tråd?
Runnable vs Thread |
|
Runnable är ett gränssnitt i Java för att skapa en tråd som gör att många trådar kan dela samma trådobjekt. | Tråden är en klass i Java för att skapa en tråd där varje tråd har ett unikt objekt kopplat till sig. |
Minne | |
I Runnable delar flera trådar samma objekt, så kräver mindre minne. | I klassen Thread skapar varje tråd ett unikt objekt och kräver därför mer minne. |
Extending Ability | |
Efter att ha implementerat ett körbart gränssnitt kan det utöka en klass. | Flera arv stöds inte i Java. Efter att ha utökat trådklassen kan den inte utöka någon annan klass. |
Kodunderhållbarhet | |
Körbart gränssnitt gör koden mer underhållbar. | I trådklass är underhållet tidskrävande. |
Sammanfattning – Runnable vs Thread
En process är uppdelad i flera delprocesser för att utföra flera uppgifter samtidigt. Dessa delprocesser är kända som trådar. Att instansiera en tråd kan göras genom att implementera Runnable-gränssnittet eller genom att utöka trådklassen. Det är lätt att utöka klassen Thread, men det är inte en bättre objektorienterad programmering. När du implementerar Runnable kan många trådar dela samma trådobjekt medan i den utökade trådklassen har varje tråd ett unikt objekt kopplat till sig. Det är skillnaden mellan Runnable och Thread. I Thread-klassen kan skapande av flera objekt förbruka mer minne.
Ladda ned PDF-filen för Runnable vs Thread
Du kan ladda ner PDF-versionen av den här artikeln och använda den för offlineändamål enligt citat. Ladda ner PDF-versionen här Skillnaden mellan körbar och tråd