logo

Večnitnost v Javi

  1. Večnitnost
  2. Večopravilnost
  3. Procesno zasnovana večopravilnost
  4. Večopravilnost na osnovi niti
  5. Kaj je nit

Večnitnost v Java je postopek izvajanja več niti hkrati.

Nit je lahek podproces, najmanjša enota obdelave. Večprocesiranje in večnitnost se uporabljata za doseganje večopravilnosti.

sql ddl ukazi

Vendar uporabljamo večnitnost kot večprocesiranje, ker niti uporabljajo skupno pomnilniško območje. Ne dodelijo ločenega pomnilniškega območja, tako da prihranijo pomnilnik, preklapljanje konteksta med nitmi pa traja manj časa kot proces.

Java Multithreading se večinoma uporablja v igrah, animacijah itd.


Prednosti Java Multithreading

1) To ne blokira uporabnika ker so niti neodvisne in lahko izvajate več operacij hkrati.

2) Ti lahko izvede veliko operacij skupaj, tako da prihrani čas .

3) Niti so neodvisen , tako da ne vpliva na druge niti, če pride do izjeme v eni niti.


Večopravilnost

Večopravilnost je proces izvajanja več nalog hkrati. Za izkoriščanje procesorja uporabljamo večopravilnost. Večopravilnost je mogoče doseči na dva načina:

  • Procesna večopravilnost (večprocesiranje)
  • Večopravilnost na osnovi niti (večnitnost)

1) Procesna večopravilnost (večprocesiranje)

  • Vsak proces ima naslov v pomnilniku. Z drugimi besedami, vsak proces dodeli ločeno pomnilniško območje.
  • Postopek je težek.
  • Stroški komunikacije med procesoma so visoki.
  • Prehod iz enega procesa v drugega zahteva nekaj časa za shranjevanje in nalaganje registri , spominske karte, posodabljanje seznamov itd.

2) Večopravilnost na podlagi niti (Multithreading)

  • Niti si delijo isti naslovni prostor.
  • Nit je lahka.
  • Stroški komunikacije med nitmi so nizki.

Opomba: Za vsako nit je potreben vsaj en proces.

Kaj je nit v Javi

Nit je lahek podproces, najmanjša enota obdelave. Gre za ločeno pot izvršitve.

Niti so neodvisne. Če pride do izjeme v eni niti, to ne vpliva na druge niti. Uporablja skupno pomnilniško območje.

Večnitnost Java

Kot je prikazano na zgornji sliki, se znotraj procesa izvede nit. Med nitmi obstaja preklapljanje konteksta. V operacijskem sistemu je lahko več procesov in en proces ima lahko več niti.

Opomba: naenkrat se izvaja samo ena nit.

Razred Java Thread

Java ponuja Razred niti za dosego programiranja niti. Razred niti zagotavlja konstruktorji in metode za ustvarjanje in izvajanje operacij v niti. Razred niti se razširi Razred predmeta in izvaja vmesnik Runnable.

Nitne metode Java

S.N. Modifikator in vrsta Metoda Opis
1) praznina začetek() Uporablja se za začetek izvajanja niti.
2) praznina teči() Uporablja se za izvedbo dejanja za nit.
3) statična praznina spati() Nit spi za določen čas.
4) statična nit trenutna nit() Vrne referenco na trenutno izvajani predmet niti.
5) praznina pridruži se() Čaka, da nit umre.
6) int getPriority() Vrne prednost niti.
7) praznina setPriority() Spremeni prioriteto niti.
8) Vrvica getName() Vrne ime niti.
9) praznina setName() Spremeni ime niti.
10) dolga getId() Vrne ID niti.
enajst) logično isAlive() Preizkuša, ali je nit živa.
12) statična praznina donos () Povzroči, da se objekt niti, ki se trenutno izvaja, začasno ustavi in ​​omogoči začasno izvajanje drugih niti.
13) praznina suspendiraj() Uporablja se za obešanje niti.
14) praznina Nadaljuj() Uporablja se za nadaljevanje obešene niti.
petnajst) praznina stop() Uporablja se za zaustavitev niti.
16) praznina uničiti () Uporablja se za uničenje skupine niti in vseh njenih podskupin.
17) logično isDaemon() Preizkuša, ali je nit demonska nit.
18) praznina setDaemon() Označi nit kot demonsko ali uporabniško nit.
19) praznina prekiniti() Prekinja nit.
dvajset) logično je prekinjeno() Preveri, ali je bila nit prekinjena.
enaindvajset) statična logična vrednost zmoten() Preveri, ali je bila trenutna nit prekinjena.
22) statična int activeCount() Vrne število aktivnih niti v skupini niti trenutne niti.
23) praznina preveriDostop() Določa, ali ima trenutno delujoča nit dovoljenje za spreminjanje niti.
24) statična logična vrednost holdLock() Vrne true, če in samo če trenutna nit zadrži zaklepanje monitorja na podanem objektu.
25) statična praznina dumpStack() Uporablja se za tiskanje sledi sklada trenutne niti v standardni tok napak.
26) StackTraceElement[] getStackTrace() Vrne matriko elementov sledi sklada, ki predstavlja izpis sklada niti.
27) statična int naštej() Uporablja se za kopiranje skupine niti vsake aktivne niti in njene podskupine v navedeno matriko.
28) Nit.Stanje getState() Uporablja se za vrnitev stanja niti.
29) ThreadGroup getThreadGroup() Uporablja se za vrnitev skupine niti, ki ji ta nit pripada
30) Vrvica toString() Uporablja se za vrnitev nizovne predstavitve te niti, vključno z imenom niti, prednostjo in skupino niti.
31) praznina obvestiti() Uporablja se za posredovanje obvestila samo eni niti, ki čaka na določen objekt.
32) praznina obvestiVse() Uporablja se za pošiljanje obvestila vsem čakajočim nitim določenega predmeta.
33) praznina setContextClassLoader() Nastavi kontekstni nalagalnik razredov za nit.
3. 4) ClassLoader getContextClassLoader() Vrne kontekst ClassLoader za nit.
35) statični Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() Vrne privzeto obravnavo, ki se prikliče, ko se nit nenadoma prekine zaradi neulovljene izjeme.
36) statična praznina setDefaultUncaughtExceptionHandler() Nastavi privzeto obravnavo, ki se prikliče, ko se nit nenadoma prekine zaradi neulovljene izjeme.
Ali veš
  • Kako izvesti dve nalogi z dvema nitima?
  • Kako izvesti večnitnost z anonimnim razredom?
  • Kaj je razporejevalnik niti in kakšna je razlika med vnaprejšnjim razporejanjem in časovnim rezanjem?
  • Kaj se zgodi, če nit začnemo dvakrat?
  • Kaj se zgodi, če pokličemo metodo run() namesto metode start()?
  • Kaj je namen metode pridružitve?
  • Zakaj JVM prekine demonsko nit, če ni več uporabniških niti?
  • Kaj je kljuka za zaustavitev?
  • Kaj je zbiranje smeti?
  • Kaj je namen metode finalize()?
  • Kaj pomeni metoda gc()?
  • Kaj je sinhronizacija in zakaj uporabljati sinhronizacijo?
  • Kakšna je razlika med sinhronizirano metodo in sinhroniziranim blokom?
  • Katera sta dva načina za izvedbo statične sinhronizacije?
  • Kaj je zastoj in kdaj lahko nastane?
  • Kaj je mednitna komunikacija ali sodelovanje?
Kaj se bomo naučili pri večnitnosti
  • Večnitnost
  • Življenjski cikel niti
  • Dva načina za ustvarjanje niti
  • Kako izvajati več nalog z več niti
  • Razporejevalnik niti
  • Spanje niti
  • Ali lahko dvakrat začnemo nit?
  • Kaj se zgodi, če pokličemo metodo run() namesto metode start()?
  • Pridruževanje niti
  • Poimenovanje niti
  • Prednost niti
  • Daemon Thread
  • ShutdownHook
  • Odvoz smeti
  • Sinhronizacija s sinhronizirano metodo
  • Sinhroniziran blok
  • Statična sinhronizacija
  • Zastoj
  • Komunikacija med nitmi