Forskjell mellom trådklasse og kjørbart grensesnitt i Java

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 13 Kan 2024
Anonim
Forskjell mellom trådklasse og kjørbart grensesnitt i Java - Teknologi
Forskjell mellom trådklasse og kjørbart grensesnitt i Java - Teknologi

Innhold


En tråd kan defineres på to måter. Først av utvide en trådklasse som allerede har implementert et kjørbart grensesnitt. For det andre, direkte implementere et kjørbart grensesnitt. Når du definerer en tråd ved å utvide trådklassen, må du overstyre kjøringen () -metoden i trådklassen. Når du definerer en tråd som implementerer et kjørbart grensesnitt, må du implementere den eneste kjøremetoden () for Runnable interface. Den grunnleggende forskjellen mellom tråd og kjørbar er at hver tråd definert ved å utvide trådklassen oppretter et unikt objekt og blir tilknyttet det objektet. På den annen side deler hver tråd definert ved å implementere kjørbart grensesnitt det samme objektet.

La oss observere noen andre forskjeller mellom tråd og kjørbar ved hjelp av sammenligningstabellen vist nedenfor:


  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningTrådkjørbart
grunn~~POS=TRUNCHver tråd oppretter et unikt objekt og blir assosiert med det.Flere tråder deler de samme objektene.
Hukommelse Når hver tråd lager et unikt objekt, kreves mer minne.Ettersom flere tråder deler det samme objektet, blir mindre minne brukt.
utvideI Java tillates ikke flere arv. Etter at en klasse har utvidet trådklassen, kan den ikke utvide noen annen klasse.Hvis en klasse definerer tråd som implementerer det kjørbare grensesnittet, har det en sjanse til å utvide en klasse.
Bruk En bruker må utvide trådklassen bare hvis den vil overstyre de andre metodene i trådklassen.Hvis du bare vil spesialisere kjøremetode, er implementering av Runnable et bedre alternativ.
kobling Utvidelse av trådklassen introduserer tett kobling da klassen inneholder kode for trådklassen og også jobben som er tilordnet trådenImplementering av kjørbart grensesnitt introduserer løs kobling ettersom koden for tråd er separat fra jobben til tråder.


Definisjon av trådklasse

Tråd er en klasse i java.lang pakke. Tråden klassen utvider en Gjenstand klasse, og det implementerer kjørbart grensesnitt. Trådklassen har konstruktører og metoder for å lage og betjene på tråden. Når vi lager flere tråder, oppretter hver tråd et unikt objekt og blir assosiert med det objektet. Hvis du oppretter en tråd som utvider trådklassen, kan du videre ikke utvide noen annen klasse da java ikke støtter flere arv. Så du bør velge å utvide trådklassen bare når du også vil overstyre noen andre metoder for trådklassen. La oss se et eksempel på å lage en tråd som utvider en trådklasse.

/ * Definere en tråd * / Class Mythread utvider tråden {/ * jobben til tråden * / public void run () {for (int i = 0; i <10; i ++) {System.Out.ln ("Child Thread" ); }} Class mainThread {/ * job of main thread * / public static void main (String args) {Mythread mt = new Mythread (); / * hovedtråd opprettet barnetråden * / mt.start (); for (int i = 0; i <10; i ++) {System.Out. ("Main Thread"); }}} / * Output * / Main Tråd hovedtråden hovedtråden hovedtråden Child Tråd Child Tråd Child Tråd Child Tråd Child Tråd hovedtråden Child Tråd hovedtråden hovedtråden Child Tråd Child Tråd hovedtråden hovedtråden Child Tråd Child Tråd hovedtråden

I koden over oppretter jeg en klasse Mythread som utvider trådklassen og overstyrer en kjøremetode for trådklassen. I klassen som inneholder hovedmetoden oppretter jeg et trådobjekt (mt) av Mythread-klassen og bruker trådobjektet påkalt start-metoden. Startmetoden starter utførelsen av tråden og samtidig påkaller JVM kjøremetoden til tråden. Nå er det to tråder i programmet: en hovedtråd og andre barnetråd opprettet av hovedtråden. Utførelsen av begge trådene skjer samtidig, men den nøyaktige utgangen kan ikke late som.

Definisjon av kjørbart grensesnitt

kjørbart er et grensesnitt i java.lang pakke. Implementering Runnable interface vi kan definere en tråd. Kjørbart grensesnitt har en enkelt metode løpe(), som implementeres av klassen som implementerer kjørbart grensesnitt. Når du velger å definere tråd som implementerer et kjørbart grensesnitt, har du fremdeles et valg om å utvide hvilken som helst annen klasse. Når du oppretter flere tråder ved å implementere kjørbart grensesnitt, deler hver tråd den samme kjørbare forekomsten. la oss lære hvordan du definerer en tråd ved å bruke Runnable interface.

/ * Definere en tråd * / Class Runnablethread implementerer kjørbar {/ * jobb for tråden * / public void run () {for (int i = 0; i <10; i ++) {System.Out.ln ("Child Thread" ); }} Class mainThread {/ * job av main thread * / public static void main (String args) {Mythread rt = new Mythread (); / * hovedtråd opprettet det kjørbare objektet * / Tråd t = ny tråd (rt); / * hovedtråd oppretter underordnet tråd og passerte det kjørbare objektet * / t.start (); for (int i = 0; i <10; i ++) {System.Out. ("Main Thread"); }}} / * Output * / Main Tråd hovedtråden hovedtråden hovedtråden Child Tråd Child Tråd Child Tråd Child Tråd Child Tråd hovedtråden Child Tråd hovedtråden hovedtråden Child Tråd Child Tråd hovedtråden hovedtråden Child Tråd Child Tråd hovedtråden

I koden over opprettet jeg en klasse Runnablethread som implementerer Runnable-grensesnitt og definerer jobben til tråden ved å implementere run () -metoden til Runnable-grensesnittet. Så lager jeg en klassetrinn som inneholder hovedmetoden. Inne i hovedmetoden erklærte jeg et kjørbart objekt fra klassen Runnablethread og sendte dette objektet til trådens konstruktør mens jeg erklærte en tråd. På denne måten koblet jeg trådobjektet (t) med et kjørbart objekt (rt). Deretter påkaller trådobjektet startmetoden til tråden som ytterligere påkaller kjøremetode for Runnablethread-klassen. Hvis jeg ikke hadde koblet kjørbart objekt med trådobjekt, ville trådstartmetoden påkalt kjøremetoden til trådklassen. Nå, igjen, det er to tråder i koden, hovedtråd og hovedtråd skaper underordnet tråd som begge blir utført samtidig, men eksakt output kan aldri late som.

Viktige forskjeller mellom tråd og kjørbar i Java

  1. Hver tråd opprettet ved å utvide tråden klassen oppretter et unikt objekt for det og blir tilknyttet det objektet. På den annen side deler hver tråd opprettet ved å implementere et kjørbart grensesnitt den samme kjørbare forekomsten.
  2. Ettersom hver tråd er assosiert med et unikt objekt når det opprettes ved å utvide trådklassen, kreves mer minne. På den annen side deler hver tråd opprettet ved å implementere kjørbart grensesnitt det samme objektområdet, og det krever mindre minne.
  3. Hvis du utvider trådklassen ytterligere, kan du arve hvilken som helst annen klasse da Java ikke tillater flere arv, mens implementering av Runnable fremdeles gir en sjanse for en klasse å arve noen annen klasse.
  4. Man må utvide en trådklasse bare hvis den må overstyre eller spesialisere noen andre metoder for trådklasse. Du må implementere et kjørbart grensesnitt hvis du bare vil spesialisere kjøremetode.
  5. Utvidelse av trådklassen introduserer tett kobling i koden da koden for tråd og jobbtråd inngår i samme klasse. På den annen side introduserer Runnable-grensesnittet løs kobling i koden ettersom koden til tråden skilles fra jobben som er tilordnet tråden.

Konklusjon:

Det er foretrukket å implementere et kjørbart grensesnitt i stedet for å utvide trådklassen. Når implementering av Runnable gjør at koden løst kobles, ettersom koden til tråden er forskjellig fra klassen som tildeler jobb til tråden. Det krever mindre minne og gjør det også mulig for en klasse å arve enhver annen klasse.