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.
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. |
- 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?
- 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