logo

Daudzpavedienu veidošana Java valodā

  1. Daudzpavedienu veidošana
  2. Daudzuzdevumu veikšana
  3. Uz procesu balstīta daudzuzdevumu veikšana
  4. Uz pavedieniem balstīta daudzuzdevumu veikšana
  5. Kas ir pavediens

Vairāku pavedienu ievadīšana Java ir process, kurā vienlaikus tiek izpildīti vairāki pavedieni.

Vītne ir viegls apakšprocess, mazākā apstrādes vienība. Daudzapstrāde un daudzpavedienu izveide tiek izmantota, lai panāktu vairākuzdevumu veikšanu.

attēlu izlīdzināšana css

Tomēr mēs izmantojam vairākpavedienu, nevis vairāku apstrādi, jo pavedieni izmanto koplietojamo atmiņas apgabalu. Tie nepiešķir atsevišķu atmiņas apgabalu, tādējādi ietaupa atmiņu, un konteksta pārslēgšana starp pavedieniem aizņem mazāk laika nekā process.

Java Multithreading galvenokārt tiek izmantota spēlēs, animācijās utt.


Java daudzpavedienu priekšrocības

1) tā nebloķē lietotāju jo pavedieni ir neatkarīgi un jūs varat veikt vairākas darbības vienlaikus.

2) Tu var veikt daudzas darbības kopā, tāpēc tas ietaupa laiku .

3) Diegi ir neatkarīgs , tāpēc tas neietekmē citus pavedienus, ja izņēmums notiek vienā pavedienā.


Daudzuzdevumu veikšana

Daudzuzdevumu veikšana ir process, kurā vienlaikus tiek izpildīti vairāki uzdevumi. Mēs izmantojam vairākuzdevumu veikšanu, lai izmantotu centrālo procesoru. Daudzuzdevumu veikšanu var veikt divos veidos:

  • Uz procesu balstīta daudzuzdevumu veikšana (daudzapstrāde)
  • Uz pavedieniem balstīta daudzuzdevumu veikšana (vairāku pavedienu veikšana)

1) Uz procesu balstīta daudzuzdevumu veikšana (daudzapstrāde)

  • Katram procesam atmiņā ir adrese. Citiem vārdiem sakot, katrs process piešķir atsevišķu atmiņas apgabalu.
  • Process ir smags.
  • Saziņas izmaksas starp procesu ir augstas.
  • Pārslēgšanās no viena procesa uz citu prasa zināmu laiku saglabāšanai un ielādei reģistros , atmiņas kartes, sarakstu atjaunināšana utt.

2) Uz pavedieniem balstīta daudzuzdevumu veikšana (vairāku pavedienu apstrāde)

  • Pavedieniem ir viena adrešu telpa.
  • Vītne ir viegla.
  • Saziņas izmaksas starp pavedieniem ir zemas.

Piezīme. Katram pavedienam ir nepieciešams vismaz viens process.

Kas ir pavediens java

Vītne ir viegls apakšprocess, mazākā apstrādes vienība. Tas ir atsevišķs izpildes ceļš.

Pavedieni ir neatkarīgi. Ja vienā pavedienā ir izņēmums, tas neietekmē citus pavedienus. Tas izmanto koplietojamo atmiņas apgabalu.

Java daudzpavedienu veidošana

Kā parādīts iepriekšējā attēlā, procesa iekšpusē tiek izpildīts pavediens. Starp pavedieniem notiek konteksta maiņa. OS var būt vairāki procesi, un vienam procesam var būt vairāki pavedieni.

Piezīme. Vienlaikus tiek izpildīts tikai viens pavediens.

Java pavedienu klase

Java nodrošina Vītnes klase lai panāktu pavedienu programmēšanu. Pavedienu klase nodrošina konstruktori un metodes, kā izveidot un veikt darbības ar pavedienu. Vītnes klase pagarinās Objektu klase un ievieš Runnable interfeisu.

Java pavedienu metodes

S.N. Modifikators un tips Metode Apraksts
1) nederīgs sākt() To izmanto, lai sāktu pavediena izpildi.
2) nederīgs palaist () To izmanto, lai veiktu darbību pavedienam.
3) statisks tukšums Gulēt() Tas guļ pavedienu uz norādīto laiku.
4) statisks pavediens pašreizējais pavediens() Tas atgriež atsauci uz pašlaik izpildāmo pavediena objektu.
5) nederīgs pievienoties () Tas gaida, kad pavediens nomirs.
6) starpt getPriority() Tas atgriež pavediena prioritāti.
7) nederīgs setPriority() Tas maina pavediena prioritāti.
8) Stīga getName() Tas atgriež pavediena nosaukumu.
9) nederīgs setName() Tas maina pavediena nosaukumu.
10) garš getId() Tas atgriež pavediena ID.
vienpadsmit) Būla ir dzīvs() Tas pārbauda, ​​vai pavediens ir dzīvs.
12) statisks tukšums raža () Tas izraisa pašlaik izpildāmā pavediena objekta pauzi un ļauj īslaicīgi izpildīt citus pavedienus.
13) nederīgs apturēt () To izmanto, lai apturētu pavedienu.
14) nederīgs turpināt() To izmanto, lai atsāktu apturēto pavedienu.
piecpadsmit) nederīgs stop () To izmanto, lai apturētu pavedienu.
16) nederīgs iznīcināt() To izmanto, lai iznīcinātu pavedienu grupu un visas tās apakšgrupas.
17) Būla isDaemon() Tas pārbauda, ​​vai pavediens ir dēmona pavediens.
18) nederīgs setDaemon() Tas atzīmē pavedienu kā dēmonu vai lietotāja pavedienu.
19) nederīgs pārtraukt () Tas pārtrauc pavedienu.
divdesmit) Būla ir pārtraukts () Tas pārbauda, ​​vai pavediens ir pārtraukts.
divdesmitviens) statiskā Būla vērtība pārtraukts () Tas pārbauda, ​​vai pašreizējais pavediens ir pārtraukts.
22) statisks starpt activeCount() Tas atgriež aktīvo pavedienu skaitu pašreizējā pavediena pavedienu grupā.
23) nederīgs pārbaudīt piekļuvi () Tas nosaka, vai pašlaik palaistajam pavedienam ir atļauja modificēt pavedienu.
24) statiskā Būla vērtība holdLock() Tas atgriež patiesu tad un tikai tad, ja pašreizējais pavediens satur monitora bloķēšanu norādītajā objektā.
25) statisks tukšums dumpStack () To izmanto, lai standarta kļūdu straumē drukātu pašreizējā pavediena steku.
26) StackTraceElement[] getStackTrace() Tas atgriež steka izsekošanas elementu masīvu, kas attēlo pavediena steka izgāztuvi.
27) statisks starpt uzskaitīt () To izmanto, lai kopētu katra aktīvā pavediena pavedienu grupu un tās apakšgrupu norādītajā masīvā.
28) Pavediens.Valsts getState() To izmanto, lai atgrieztu pavediena stāvokli.
29) ThreadGroup getThreadGroup() To izmanto, lai atgrieztu pavedienu grupu, kurai pieder šis pavediens
30) Stīga toString() To izmanto, lai atgrieztu šī pavediena virknes attēlojumu, tostarp pavediena nosaukumu, prioritāti un pavedienu grupu.
31) nederīgs paziņot() To izmanto, lai sniegtu paziņojumu tikai par vienu pavedienu, kas gaida konkrētu objektu.
32) nederīgs paziņot visiem() To izmanto, lai sniegtu paziņojumu visiem konkrēta objekta gaidošajiem pavedieniem.
33) nederīgs setContextClassLoader() Tas iestata konteksta ClassLoader pavedienam.
3. 4) ClassLoader getContextClassLoader() Tas atgriež pavedienam konteksta ClassLoader.
35) statisks pavediens.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() Tas atgriež noklusējuma apdarinātāju, kas tiek izsaukts, kad pavediens pēkšņi beidzas nenoķerta izņēmuma dēļ.
36) statisks tukšums setDefaultUncaughtExceptionHandler() Tas iestata noklusējuma apdarinātāju, kas tiek izsaukts, kad pavediens pēkšņi beidzas nenoķerta izņēmuma dēļ.
Vai Tu zini
  • Kā veikt divus uzdevumus ar diviem pavedieniem?
  • Kā veikt anonīmās klases multithreading?
  • Kas ir pavedienu plānotājs un kāda ir atšķirība starp iepriekšēju plānošanu un laika sadalīšanu?
  • Kas notiek, ja pavedienu sākam divreiz?
  • Kas notiek, ja mēs izsauksim run() metodi, nevis start() metodi?
  • Kāds ir pievienošanās metodes mērķis?
  • Kāpēc JVM pārtrauc dēmona pavedienu, ja vairs nav neviena lietotāja pavediena?
  • Kas ir izslēgšanas āķis?
  • Kas ir atkritumu savākšana?
  • Kāds ir finalize() metodes mērķis?
  • Ko nozīmē gc() metode?
  • Kas ir sinhronizācija un kāpēc izmantot sinhronizāciju?
  • Kāda ir atšķirība starp sinhronizēto metodi un sinhronizēto bloku?
  • Kādi ir divi veidi, kā veikt statisko sinhronizāciju?
  • Kas ir strupceļš un kad tas var notikt?
  • Kas ir starppavedienu komunikācija vai sadarbība?
Ko mēs iemācīsimies Multithreading
  • Daudzpavedienu veidošana
  • Vītnes dzīves cikls
  • Divi veidi, kā izveidot pavedienu
  • Kā veikt vairākus uzdevumus, izmantojot vairākus pavedienus
  • Pavedienu plānotājs
  • Guļot pavedienu
  • Vai mēs varam sākt pavedienu divreiz?
  • Kas notiek, ja mēs izsauksim run() metodi, nevis start() metodi?
  • Pievienošanās pavedienam
  • Nosaucot pavedienu
  • Vītnes prioritāte
  • Dēmona pavediens
  • ShutdownHook
  • Atkritumu kolekcija
  • Sinhronizācija ar sinhronizēto metodi
  • Sinhronizēts bloks
  • Statiskā sinhronizācija
  • Strupceļš
  • Saziņa starp pavedieniem