logo

Multithreading i Java

  1. Multithreading
  2. Multitasking
  3. Prosessbasert multitasking
  4. Trådbasert multitasking
  5. Hva er tråd

Multithreading inn Java er en prosess med å kjøre flere tråder samtidig.

En tråd er en lett underprosess, den minste prosesseringsenheten. Multiprosessering og multithreading, begge brukes for å oppnå multitasking.

fibonacci kode java

Imidlertid bruker vi multithreading enn multiprosessering fordi tråder bruker et delt minneområde. De tildeler ikke separat minneområde, så det sparer minne, og kontekstveksling mellom trådene tar mindre tid enn prosess.

Java Multithreading brukes mest i spill, animasjon osv.


Fordeler med Java Multithreading

1) Det blokkerer ikke brukeren fordi tråder er uavhengige og du kan utføre flere operasjoner samtidig.

2) Du kan utføre mange operasjoner sammen, så det sparer tid .

3) Tråder er uavhengig , så det påvirker ikke andre tråder hvis et unntak forekommer i en enkelt tråd.


Multitasking

Multitasking er en prosess for å utføre flere oppgaver samtidig. Vi bruker multitasking for å utnytte CPUen. Multitasking kan oppnås på to måter:

  • Prosessbasert multitasking (multiprosessering)
  • Trådbasert multitasking (Multithreading)

1) Prosessbasert multitasking (multiprosessering)

  • Hver prosess har en adresse i minnet. Med andre ord, hver prosess tildeler et eget minneområde.
  • En prosess er tungvekt.
  • Kostnadene for kommunikasjon mellom prosessene er høye.
  • Å bytte fra en prosess til en annen krever litt tid for lagring og lasting registrerer , minnekart, oppdatering av lister osv.

2) Trådbasert multitasking (multithreading)

  • Tråder deler samme adresseområde.
  • En tråd er lett.
  • Kostnaden for kommunikasjon mellom tråden er lav.

Merk: Det kreves minst én prosess for hver tråd.

Hva er tråd i java

En tråd er en lett underprosess, den minste prosesseringsenheten. Det er en egen vei for henrettelse.

Trådene er uavhengige. Hvis det forekommer unntak i en tråd, påvirker det ikke andre tråder. Den bruker et delt minneområde.

Java Multithreading

Som vist i figuren ovenfor, utføres en tråd inne i prosessen. Det er kontekstbytte mellom trådene. Det kan være flere prosesser inne i OS, og én prosess kan ha flere tråder.

Merk: Bare én tråd kjøres om gangen.

Java Thread klasse

Java gir Trådklasse for å oppnå trådprogrammering. Trådklasse gir konstruktører og metoder for å opprette og utføre operasjoner på en tråd. Trådklassen utvides Objektklasse og implementerer kjørbart grensesnitt.

Java-trådmetoder

S.N. Modifikator og type Metode Beskrivelse
1) tomrom start() Den brukes til å starte utførelsen av tråden.
2) tomrom løpe() Den brukes til å gjøre en handling for en tråd.
3) statisk tomrom sove() Den sover en tråd i den angitte tiden.
4) statisk tråd gjeldende tråd() Den returnerer en referanse til trådobjektet som kjører for øyeblikket.
5) tomrom bli med() Den venter på at en tråd skal dø.
6) int getPriority() Det returnerer prioritet til tråden.
7) tomrom setPriority() Det endrer prioritet til tråden.
8) String getName() Det returnerer navnet på tråden.
9) tomrom setName() Det endrer navnet på tråden.
10) lang getId() Den returnerer id-en til tråden.
elleve) boolsk er i live() Den tester om tråden er i live.
12) statisk tomrom utbytte() Det fører til at trådobjektet som kjører for øyeblikket, stopper og lar andre tråder kjøres midlertidig.
1. 3) tomrom utsette() Den brukes til å suspendere tråden.
14) tomrom gjenoppta() Den brukes til å gjenoppta den suspenderte tråden.
femten) tomrom Stoppe() Den brukes til å stoppe tråden.
16) tomrom ødelegge() Den brukes til å ødelegge trådgruppen og alle dens undergrupper.
17) boolsk isDaemon() Den tester om tråden er en demon-tråd.
18) tomrom setDaemon() Den markerer tråden som demon eller brukertråd.
19) tomrom avbryte() Det avbryter tråden.
tjue) boolsk er avbrutt() Den tester om tråden er avbrutt.
tjueen) statisk boolsk avbrutt() Den tester om den gjeldende tråden er avbrutt.
22) statisk int activeCount() Den returnerer antall aktive tråder i den gjeldende trådens trådgruppe.
23) tomrom checkAccess() Den avgjør om tråden som kjører for øyeblikket har tillatelse til å endre tråden.
24) statisk boolsk holdLock() Den returnerer sann hvis og bare hvis gjeldende tråd holder monitorlåsen på det angitte objektet.
25) statisk tomrom dumpStack() Den brukes til å skrive ut et stabelspor av gjeldende tråd til standard feilstrøm.
26) StackTraceElement[] getStackTrace() Den returnerer en rekke stabelsporelementer som representerer stabeldumpen til tråden.
27) statisk int enumerate() Den brukes til å kopiere hver aktive tråds trådgruppe og dens undergruppe til den angitte matrisen.
28) Tråd.Stat getState() Den brukes til å returnere trådens tilstand.
29) Trådgruppe getThreadGroup() Den brukes til å returnere trådgruppen som denne tråden tilhører
30) String toString() Den brukes til å returnere en strengrepresentasjon av denne tråden, inkludert trådens navn, prioritet og trådgruppe.
31) tomrom gi beskjed() Den brukes til å gi varsling for bare én tråd som venter på et bestemt objekt.
32) tomrom varsleAlle() Den brukes til å gi varslingen til alle ventende tråder for et bestemt objekt.
33) tomrom setContextClassLoader() Den setter konteksten ClassLoader for tråden.
3. 4) ClassLoader getContextClassLoader() Den returnerer konteksten ClassLoader for tråden.
35) statisk Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() Den returnerer standardbehandleren som påkalles når en tråd avsluttes brått på grunn av et uoppdaget unntak.
36) statisk tomrom setDefaultUncaughtExceptionHandler() Den angir standardbehandleren som påkalles når en tråd avsluttes brått på grunn av et uoppdaget unntak.
Vet du
  • Hvordan utføre to oppgaver med to tråder?
  • Hvordan utføre multithreading av anonym klasse?
  • Hva er trådplanleggeren og hva er forskjellen mellom forebyggende planlegging og tidsskjæring?
  • Hva skjer hvis vi starter en tråd to ganger?
  • Hva skjer hvis vi kaller run()-metoden i stedet for start()-metoden?
  • Hva er hensikten med sammenføyningsmetoden?
  • Hvorfor avslutter JVM daemon-tråden hvis ingen brukertråder er igjen?
  • Hva er avstengningskroken?
  • Hva er søppelinnsamling?
  • Hva er hensikten med finalize()-metoden?
  • Hva gjør gc()-metoden?
  • Hva er synkronisering og hvorfor bruke synkronisering?
  • Hva er forskjellen mellom synkronisert metode og synkronisert blokk?
  • Hva er de to måtene å utføre statisk synkronisering på?
  • Hva er dødlås og når kan det oppstå?
  • Hva er intertråd-kommunikasjon eller samarbeid?
Hva vil vi lære i Multithreading
  • Multithreading
  • Livssyklusen til en tråd
  • To måter å lage en tråd på
  • Hvordan utføre flere oppgaver etter flere tråder
  • Trådplanlegger
  • Sover en tråd
  • Kan vi starte en tråd to ganger?
  • Hva skjer hvis vi kaller run()-metoden i stedet for start()-metoden?
  • Bli med i en tråd
  • Gi navn til en tråd
  • Prioritering av en tråd
  • Demon-tråd
  • ShutdownHook
  • Søppelsamling
  • Synkronisering med synkronisert metode
  • Synkronisert blokk
  • Statisk synkronisering
  • Dødlås
  • Kommunikasjon mellom tråder