logo

Мултитхреадинг у Јави

  1. Мултитхреадинг
  2. Мултитаскинг
  3. Мултитаскинг заснован на процесу
  4. Мултитаскинг заснован на нитима
  5. Шта је Тхреад

Мултитхреадинг ин Јава је процес извршавања више нити истовремено.

Нит је лагани подпроцес, најмања јединица обраде. Вишепроцесирање и вишенитно, оба се користе за постизање више задатака.

сачувај иоутубе видео влц

Међутим, ми користимо вишенитно него вишепроцесирање јер нити користе заједничку меморијску област. Они не додељују одвојену меморијску област тако да штеде меморију, а пребацивање контекста између нити траје мање времена него процес.

Јава Мултитхреадинг се углавном користи у играма, анимацијама итд.


Предности Јава мултитхреадинг-а

1) То не блокира корисника јер су нити независне и можете изводити више операција у исто време.

2) Ви може да обавља многе операције заједно, тако да штеди време .

3) Нити су независни , тако да не утиче на друге нити ако дође до изузетка у једној нити.


Мултитаскинг

Мултитаскинг је процес извршавања више задатака истовремено. Користимо мултитаскинг да бисмо користили ЦПУ. Мултитаскинг се може постићи на два начина:

  • Мултитаскинг заснован на процесу (вишепроцесна)
  • Мултитаскинг заснован на нитима (вишенитност)

1) Мултитаскинг заснован на процесу (вишепроцесирање)

  • Сваки процес има адресу у меморији. Другим речима, сваки процес додељује засебну меморијску област.
  • Процес је тежак.
  • Цена комуникације између процеса је висока.
  • Прелазак са једног процеса на други захтева неко време за чување и учитавање регистри , меморијске мапе, ажурирање листа итд.

2) Мултитаскинг заснован на нитима (Мултитхреадинг)

  • Нити деле исти адресни простор.
  • Конац је лаган.
  • Цена комуникације између нити је ниска.

Напомена: За сваку нит је потребан најмање један процес.

Шта је Тхреад у Јави

Нит је лагани подпроцес, најмања јединица обраде. То је посебан пут извршења.

Теме су независне. Ако дође до изузетка у једној нити, то не утиче на друге нити. Користи заједничку меморијску област.

Јава Мултитхреадинг

Као што је приказано на горњој слици, нит се извршава унутар процеса. Постоји пребацивање контекста између нити. Унутар ОС-а може постојати више процеса, а један процес може имати више нити.

Напомена: У исто време се извршава само једна нит.

Јава Тхреад класа

Јава пружа Тхреад цласс да се постигне програмирање нити. Класа нити пружа конструктори и методе за креирање и извођење операција на нити. Класа нити се проширује Објекат класа и имплементира Руннабле интерфејс.

Јава Тхреад Метходс

С.Н. Модификатор и тип Метод Опис
1) празнина почетак() Користи се за почетак извршавања нити.
2) празнина трцати() Користи се за обављање акције за нит.
3) статична празнина спавај() Спава нит одређено време.
4) статиц Тхреад цуррентТхреад() Враћа референцу на објекат нити који се тренутно извршава.
5) празнина придружити() Чека да нит умре.
6) инт гетПриорити() Враћа приоритет нити.
7) празнина сетПриорити() То мења приоритет нити.
8) Низ гетНаме() Враћа име нити.
9) празнина сетНаме() То мења име нити.
10) дугачак гетИд() Враћа ид нити.
Једанаест) боолеан је жив() Тестира да ли је нит жива.
12) статична празнина принос() То доводи до паузирања објекта нити који се тренутно извршава и дозвољава другим нитима да се привремено изврше.
13) празнина суспендовати() Користи се за суспендовање нити.
14) празнина Резиме() Користи се за наставак суспендоване нити.
петнаест) празнина зауставити() Користи се за заустављање нити.
16) празнина уништи() Користи се за уништавање групе нити и свих њених подгрупа.
17) боолеан исДаемон() Тестира да ли је нит демон нит.
18) празнина сетДаемон() Означава нит као демонску или корисничку нит.
19) празнина прекидати() Прекида нит.
двадесет) боолеан је прекинут() Тестира да ли је нит прекинута.
двадесет један) статички боолеан прекинут() Тестира да ли је тренутна нит прекинута.
22) статиц инт ацтивеЦоунт() Враћа број активних нити у групи нити тренутне нити.
23) празнина цхецкАццесс() Одређује да ли тренутно покренута нит има дозволу да модификује нит.
24) статички боолеан холдЛоцк() Враћа тачно ако и само ако тренутна нит држи закључавање монитора на наведеном објекту.
25) статична празнина думпСтацк() Користи се за штампање трага стека тренутне нити у стандардни ток грешака.
26) СтацкТрацеЕлемент[] гетСтацкТраце() Враћа низ елемената праћења стека који представљају думп стека нити.
27) статиц инт набрајати() Користи се за копирање групе нити сваке активне нити и њене подгрупе у наведени низ.
28) Тхреад.Стате гетСтате() Користи се за враћање стања нити.
29) ТхреадГроуп гетТхреадГроуп() Користи се за враћање групе нити којој ова нит припада
30) Низ тоСтринг() Користи се за враћање стринг репрезентације ове нити, укључујући име нити, приоритет и групу нити.
31) празнина обавести() Користи се за давање обавештења само за једну нит која чека одређени објекат.
32) празнина нотифиАлл() Користи се за давање обавештења свим нитима на чекању одређеног објекта.
33) празнина сетЦонтектЦлассЛоадер() Поставља контекст ЦлассЛоадер за нит.
3. 4) ЦлассЛоадер гетЦонтектЦлассЛоадер() Враћа контекст ЦлассЛоадер за нит.
35) статиц Тхреад.УнцаугхтЕкцептионХандлер гетДефаултУнцаугхтЕкцептионХандлер() Враћа подразумевани руковалац који се позива када се нит нагло прекине због неухваћеног изузетка.
36) статична празнина сетДефаултУнцаугхтЕкцептионХандлер() Поставља подразумевани руковалац који се позива када се нит нагло прекине због неухваћеног изузетка.
Да ли знаш
  • Како извршити два задатка по две нити?
  • Како извести вишенитно увођење анонимне класе?
  • Шта је Тхреад Сцхедулер и која је разлика између превентивног заказивања и пресецања времена?
  • Шта се дешава ако двапут покренемо нит?
  • Шта се дешава ако позовемо методу рун() уместо старт() методу?
  • Која је сврха методе придруживања?
  • Зашто ЈВМ прекида демонску нит ако нема преостале корисничке нити?
  • Шта је кука за искључивање?
  • Шта је одвоз смећа?
  • Која је сврха методе финализе()?
  • Шта ради гц() метода?
  • Шта је синхронизација и зашто се користи синхронизација?
  • Која је разлика између синхронизоване методе и синхронизованог блока?
  • Која су два начина за обављање статичке синхронизације?
  • Шта је застој и када може доћи?
  • Шта је међунитна комуникација или сарадња?
Шта ћемо научити у Мултитхреадинг-у
  • Мултитхреадинг
  • Животни циклус нити
  • Два начина за креирање нити
  • Како извршити више задатака са више нити
  • Тхреад Сцхедулер
  • Спавање конац
  • Можемо ли двапут покренути нит?
  • Шта се дешава ако позовемо методу рун() уместо старт() методу?
  • Придруживање нити
  • Именовање нити
  • Приоритет нити
  • Даемон Тхреад
  • СхутдовнХоок
  • Отпад
  • Синхронизација са синхронизованим методом
  • Синхронизовани блок
  • Статичка синхронизација
  • Застој
  • Комуникација између нити