- Daugiagija
- Daugiafunkcinis darbas
- Procesu pagrįstas daugiafunkcinis darbas
- Daugiafunkcinis darbas su gijomis
- Kas yra Siūlas
Kelių gijų įvedimas Java yra kelių gijų vienu metu vykdymo procesas.
Siūlas yra lengvas antrinis procesas, mažiausias apdorojimo vienetas. Daugiasluoksnis apdorojimas ir daugiasriegis sriegis – abu naudojami daugiafunkciam darbui atlikti.
tokia svetainė kaip coomeet
Tačiau mes naudojame kelių gijų, o ne daugiasluoksnį apdorojimą, nes gijos naudoja bendros atminties sritį. Jie neskiria atskiros atminties srities, todėl taupoma atmintis, o konteksto perjungimas tarp gijų trunka trumpiau nei procesas.
Java Multithreading dažniausiai naudojamas žaidimuose, animacijoje ir kt.
Java Multithreading privalumai
1) Tai neblokuoja vartotojo nes gijos yra nepriklausomos ir vienu metu galite atlikti kelias operacijas.
2) Jūs kartu gali atlikti daug operacijų, todėl sutaupoma laiko .
3) Siūlai yra nepriklausomas , todėl tai neturi įtakos kitoms gijomis, jei vienoje gijoje yra išimtis.
Daugiafunkcinis darbas
Daugiafunkcinis darbas yra kelių užduočių vienu metu vykdymo procesas. Mes naudojame daugiafunkcinį darbą, kad galėtume panaudoti centrinį procesorių. Daugiafunkcinis darbas gali būti atliekamas dviem būdais:
- Procesu pagrįstas daugiafunkcinis darbas (daugiafunkcinis apdorojimas)
- Daugiasluoksnių užduočių atlikimas gijomis (daugiagija)
1) Procesu pagrįstas daugiafunkcinis darbas (daugiafunkcinis apdorojimas)
- Kiekvienas procesas turi adresą atmintyje. Kitaip tariant, kiekvienas procesas skiria atskirą atminties sritį.
- Procesas yra sunkus.
- Ryšio tarp proceso kaina yra didelė.
- Norint pereiti nuo vieno proceso prie kito, reikia šiek tiek laiko išsaugoti ir įkelti registrai , atminties žemėlapiai, sąrašų atnaujinimas ir kt.
2) gijomis pagrįstas daugiafunkcinis darbas (daugiagijai)
- Gijos turi tą pačią adresų erdvę.
- Siūlas yra lengvas.
- Ryšio tarp gijų kaina yra maža.
Pastaba: kiekvienai gijai reikalingas bent vienas procesas.
Kas yra Thread java
Siūlas yra lengvas subprocesas, mažiausias apdorojimo vienetas. Tai atskiras vykdymo kelias.
Gijos yra nepriklausomos. Jei vienoje gijoje yra išimtis, tai neturės įtakos kitoms gijomis. Jis naudoja bendros atminties sritį.
Kaip parodyta aukščiau esančiame paveikslėlyje, proceso viduje vykdomas siūlas. Yra konteksto perjungimas tarp gijų. OS viduje gali būti keli procesai, o vienas procesas gali turėti kelias gijas.
Pastaba: vienu metu vykdoma tik viena gija.
Java gijų klasė
Java suteikia Siūlų klasė pasiekti gijų programavimą. Siūlų klasė suteikia konstruktoriai ir metodai, kaip sukurti ir atlikti operacijas su gijomis. Siūlų klasė pratęsiama Objektų klasė ir įgyvendina Runnable sąsają.
Java gijų metodai
S.N. | Modifikatorius ir tipas | Metodas | apibūdinimas |
---|---|---|---|
1) | tuštuma | pradžia () | Jis naudojamas gijos vykdymui pradėti. |
2) | tuštuma | paleisti () | Jis naudojamas gijos veiksmui atlikti. |
3) | statinė tuštuma | miegoti () | Nurodytą laiką jis miega siūlą. |
4) | statinis siūlas | dabartinė gija () | Jis grąžina nuorodą į šiuo metu vykdomą gijos objektą. |
5) | tuštuma | prisijungti () | Jis laukia, kol gija numirs. |
6) | tarpt | getPriority () | Tai grąžina gijos prioritetą. |
7) | tuštuma | setPriority() | Tai pakeičia gijos prioritetą. |
8) | Styga | getName () | Tai grąžina gijos pavadinimą. |
9) | tuštuma | setName() | Tai pakeičia gijos pavadinimą. |
10) | ilgai | getId() | Tai grąžina gijos ID. |
vienuolika) | loginis | gyvas() | Jis patikrina, ar siūlas gyvas. |
12) | statinė tuštuma | derlius () | Dėl to šiuo metu vykdomas gijos objektas sustabdomas ir laikinai leidžiama vykdyti kitas gijas. |
13) | tuštuma | sustabdyti () | Jis naudojamas siūlui sustabdyti. |
14) | tuštuma | Aprašymas() | Jis naudojamas pakabintam sriegiui atnaujinti. |
penkiolika) | tuštuma | sustabdyti() | Jis naudojamas siūlui sustabdyti. |
16) | tuštuma | sunaikinti () | Jis naudojamas gijų grupei ir visiems jos pogrupiams sunaikinti. |
17) | loginis | isDaemon () | Jis patikrina, ar gija yra demono gija. |
18) | tuštuma | setDaemon() | Ji pažymi giją kaip demoną arba vartotojo giją. |
19) | tuštuma | nutraukti () | Tai nutraukia giją. |
dvidešimt) | loginis | yra pertrauktas () | Jis patikrina, ar gija nebuvo nutraukta. |
dvidešimt vienas) | statinis loginis | nutrauktas () | Jis patikrina, ar dabartinė gija nebuvo nutraukta. |
22) | statinis tarpt | aktyvus skaičius() | Jis grąžina aktyvių gijų skaičių dabartinės gijos gijų grupėje. |
23) | tuštuma | checkAccess () | Jis nustato, ar šiuo metu veikianti gija turi teisę keisti giją. |
24) | statinis loginis | holdLock() | Jis grąžina teisingą tada ir tik tada, kai dabartinė gija palaiko monitoriaus užraktą nurodytame objekte. |
25) | statinė tuštuma | dumpStack () | Jis naudojamas spausdinti dabartinės gijos pėdsaką į standartinį klaidų srautą. |
26) | StackTraceElement[] | getStackTrace () | Jis grąžina krūvos pėdsakų elementų masyvą, atspindintį gijos dėklo išmetimą. |
27) | statinis tarpt | išvardinti () | Jis naudojamas kiekvienos aktyvios gijos gijų grupei ir jos pogrupiui nukopijuoti į nurodytą masyvą. |
28) | Siūlas.Valstybė | getState () | Jis naudojamas gijos būsenai grąžinti. |
29) | Gijų grupė | getThreadGroup() | Jis naudojamas gijų grupei, kuriai priklauso ši gija, grąžinti |
30) | Styga | toString() | Jis naudojamas norint grąžinti šios gijos eilutę, įskaitant gijos pavadinimą, prioritetą ir gijų grupę. |
31) | tuštuma | pranešti () | Jis naudojamas pranešti tik apie vieną giją, kuri laukia konkretaus objekto. |
32) | tuštuma | pranešti visiems () | Jis naudojamas pranešti visoms laukiančioms konkretaus objekto gijomis. |
33) | tuštuma | setContextClassLoader() | Jis nustato gijos kontekstą ClassLoader. |
3. 4) | Classloader | getContextClassLoader() | Jis grąžina gijos kontekstinį ClassLoader. |
35) | statinis siūlas.UncaughtExceptionHandler | getDefaultUncaughtExceptionHandler() | Jis grąžina numatytąją tvarkyklę, iškviestą, kai gija staiga nutrūksta dėl nepagautos išimties. |
36) | statinė tuštuma | setDefaultUncaughtExceptionHandler() | Ji nustato numatytąją tvarkyklę, kuri iškviečiama, kai gija staiga nutrūksta dėl nepagautos išimties. |
- Kaip atlikti dvi užduotis dviem gijomis?
- Kaip atlikti kelių gijų sukūrimą anoniminėje klasėje?
- Kas yra gijų planuoklis ir kuo skiriasi prevencinis planavimas nuo laiko pjaustymo?
- Kas nutiks, jei giją pradėsime du kartus?
- Kas atsitiks, jei iškviesime metodą run() vietoj start() metodo?
- Koks yra prisijungimo metodo tikslas?
- Kodėl JVM nutraukia demono giją, jei nebėra vartotojo gijų?
- Kas yra išjungimo kabliukas?
- Kas yra šiukšlių surinkimas?
- Koks yra finalize() metodo tikslas?
- Ką reiškia gc() metodas?
- Kas yra sinchronizavimas ir kodėl naudoti sinchronizavimą?
- Kuo skiriasi sinchronizuotas metodas ir sinchronizuotas blokas?
- Kokie yra du statinio sinchronizavimo būdai?
- Kas yra aklavietė ir kada ji gali atsirasti?
- Kas yra tarpgijų komunikacija arba bendradarbiavimas?
- Daugiagija
- Gijos gyvavimo ciklas
- Du būdai sukurti giją
- Kaip atlikti kelias užduotis keliomis gijomis
- Gijų planuoklis
- Miegoti siūlą
- Ar galime pradėti temą du kartus?
- Kas atsitiks, jei iškviesime metodą run() vietoj start() metodo?
- Prisijungimas prie gijos
- Gijos pavadinimas
- Gijos prioritetas
- Daemon Thread
- ShutdownHook
- Šiukšlių kolekcija
- Sinchronizavimas su sinchronizuotu metodu
- Sinchronizuotas blokas
- Statinė sinchronizacija
- Aklavietė
- Bendravimas tarp gijų