Ниво 28

Отговорът на този въпрос е в лекциите на CodeGym.

За да оптимизира паралелната работа на нишките, Java има способността да задава приоритети на нишките. Нишките с по-висок приоритет имат предимството да спечелят време на процесора пред нишките с по-нисък приоритет.

Приоритетната обработка се осигурява от следните методи от класа Thread:

публичен окончателен void setPriority (int newPriority)

Задава приоритета на нишка.

публичен окончателен int getPriority ()

Позволява ви да знаете приоритета на нишката.

Стойността на параметъра в метода setPriority не може да бъде произволна. Той трябва да варира от MIN_PRIORITY до MAX_PRIORITY. При създаването си нишката има приоритет NORM_PRIORITY .

MIN_PRIORITY = 1.
NORM_PRIORITY = 5.
MAX_PRIORITY = 10.

Възможно ли е да спрете една нишка, като намалите нейния приоритет до 0?

Отговор в статията: „Топ 50 въпроса за интервю. Тема: Многопоточност "

Намерени във форума.

Java предоставя богати API за всичко, но по ирония на съдбата не предоставя удобни начини за спиране на нишка. JDK 1.0 имаше няколко метода за контрол като stop (), suspend () и resume (), които бяха маркирани като оттеглени в бъдещи версии поради потенциални заплахи за блокиране, тъй като тогава разработчиците на Java API не направиха опит да осигурят постоянен, безопасен за нишките и елегантен начин за спиране на нишките. Програмистите разчитат главно на факта, че нишката се спира сама, щом завърши с изпълнението на методите run () или call (). За да спрат ръчно, програмистите се възползват от променлива булева променлива и проверяват нейната стойност във всяка итерация дали има цикли в метода run () или прекъсват нишки с метода interrupt (), за да анулират внезапно заданията.

Конкретно по въпроса: Никога не съм виждал някой да е задавал приоритета на 0.

Защо се нуждаете от клас ThreadGroup ?

ThreadGroup е колекция от нишки, която може да съдържа и други групи нишки. Група нишки образува дърво, в което всяка друга група нишки има родител (с изключение на оригиналния). Нишката има право на достъп до данни от собствената си група нишки, но няма такъв достъп до други групи или до родителската група нишки.

В коя група нишки е основната нишка? ?

Никъде не го намерих)) Кажете къде е))

Какво представлява моделът на ThreadPool ?

Има откъс от статията на wikipedia за това:

При компютърното програмиране моделът на пула от нишки (също репликирани работници или модел на работник-екипаж) е мястото, където се създават редица нишки за изпълнение на редица задачи, които обикновено се организират на опашка. Резултатите от изпълняваните задачи също могат да бъдат поставени в опашка или задачите може да не върнат резултат (например, ако задачата е за анимация). Обикновено има много повече задачи, отколкото нишки. Веднага след като нишката завърши задачата си, тя ще поиска следващата задача от опашката, докато всички задачи бъдат завършени. След това нишката може да прекрати или да заспи, докато не са налични нови задачи.

Броят на използваните нишки е параметър, който може да бъде настроен, за да осигури най-добра производителност. Освен това броят на нишките може да бъде динамичен в зависимост от броя на чакащите задачи. Например уеб сървърът може да добавя нишки, ако влязат множество заявки за уеб страници, и може да премахва нишки, когато тези заявки намаляват. Цената на наличието на по-голям пул от нишки е увеличеното използване на ресурсите. Алгоритъмът, използван за определяне кога да се създават или унищожават нишки, ще окаже влияние върху цялостната производителност:

  • създайте твърде много нишки и ресурсите се губят, а времето също се губи, създавайки неизползвани нишки
  • унищожете твърде много нишки и по-късно ще бъде отделено повече време за създаването им отново
  • създаването на нишки твърде бавно може да доведе до лоша производителност на клиента (дълго време на изчакване)

В компютърното програмиране има модел на пул от нишки, при който се създава определен брой нишки за изпълнение на различни задачи, които обикновено се поставят на опашка. Резултатите от изпълнени задачи също могат да бъдат поставени на опашка или задачите може да не върнат никакъв резултат (например, ако задачата е за анимация).