Какво е многопоточност в Java

В Java нишките могат да се разглеждат като гръбнакът на паралелността. Нишката е изпълнима, лека единица, която има достъп до общи ресурси, както и до собствен стек за повиквания.

Приложението на Java е един процес и в рамките на това приложение можем да създадем множество нишки, за да постигнем едновременност в програмата на Java.

Приложение, работещо в системата, може да има множество екземпляри и те обикновено се наричат ​​приложения с множество документи. Тези екземпляри на приложение се наричат ​​процеси. Нишката е присвоена на всеки от тези процеси.

В зависимост от изискванията на приложението, процесът може да бъде присвоен или на една нишка, или на множество нишки. Когато на процеса на приложение са присвоени множество нишки, тогава трябва да изпълним тези множество нишки едновременно.

Тази техника за изпълнение на множество нишки едновременно се нарича многопоточност.“

Просто многонишковостта означава, че имаме повече от една нишка, работеща в едно и също приложение.

Java има вградена поддръжка за многопоточност.

Многонишковостта е изобразена на горната диаграма. Както е показано по-горе, има множество нишки (нишка1, нишка2 и нишка3), които се изпълняват едновременно в приложение.

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

Нишките се изпълняват паралелно една на друга в многонишкови приложения по паралелен начин. По този начин многонишковостта също е част от паралелността на Java. Имайте предвид, че въпреки че има много нишки, те споделят областта на паметта, като по този начин спестяват памет. Освен това нишките могат да превключват контексти за нула време.

Многонишковостта е полезна, тъй като осигурява едновременно изпълнение на множество части от приложение. По този начин приложението използва максимално процесорното време, а времето на неактивност се свежда до минимум.

По-долу са някои от термините, които трябва да знаем във връзка с многонишковостта, тъй като те се използват тук често.

Многозадачност:При многозадачност, изпълнението на повече от една задача едновременно.

Многопоточност:Многопоточността е процес на изпълнение на множество нишки едновременно.

Многопроцесорна обработка: При многопроцесорна обработка множество процеси се изпълняват едновременно. Като многозадачност, но тук са включени повече от един процесор.

Паралелна обработка: Паралелната обработка е техника, при която няколко процесора работят едновременно.

След като обсъдихме многопоточността, възниква въпросът защо имаме нужда от многопоточност?

Предимства на многопоточността

Многонишковостта има различни предимства, които ни помагат в ефективното програмиране.

Точките по-долу ще го изяснят.

(1) Ефективно използване на системи с един процесор

Когато има само един процесор с една нишка, тогава процесорното време се губи. Когато нишката е заета с други ресурси като IO, процесорът остава неактивен. Можем да подобрим това и да използваме по-добре процесора, като имаме многонишкови приложения.

Чрез използването на многопоточност, ако една нишка се извършва с процесор, тогава другата нишка може да я използва. При множество нишки времето на неактивност на процесора ще бъде значително сведено до минимум.

(2) Ефективно използване на множество CPU системи

Имайки повече от един процесор, многонишковите приложения могат да използват ефективно няколко процесора.

(3) Подобрено потребителско изживяване по отношение на отзивчивостта

Отзивчивостта на системата се подобрява с многонишкови приложения. Не се сблъскваме с „зависването на графичния интерфейс“, когато имаме множество нишки, изпълняващи различни задачи в приложението и потребителите не трябва да чакат, за да получат отговор за своите заявки.

По същия начин, това е и предимството на многонишковостта, че потребителите са правилно услуги в многонишкови системи.

Как да внедрим паралелност в Java

Класът, чрез който можем да реализираме паралелност в Java, е клас java.lang.Thread. Този клас Thread формира основата на паралелността в Java програма.

Имаме и този java.lang.Runnable интерфейс, който може да бъде имплементиран от Java клас за абстрахиране на поведението на нишката. За разширено разработване на приложения ние използваме пакета java.util.concurrent, наличен от Java 1.5.

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

Какво е нишка в Java

Една нишка може да се определи като най-малката единица за обработка. В Java можем да използваме класа „Thread“ за създаване на нишка в нашата програма.

Има два вида Java нишки:

(1) Потребителска нишка: При първото стартиране на приложението се създава потребителска нишка. След това можем да създадем колкото се може повече потребителски и демон нишки според нашите изисквания.

(2) Демон нишка: демон нишките се използват главно във фонов режим и се използват за задачи като почистване на приложението и др.

Нишките минимизират разходите за поддръжка на приложението. Освен това намалява разходите за приложения.

По-долу е показан пример за една нишка:

public class Main{

public static void main (String [] args){

System.out.println("Hi, I am a thread");

}

}

Горната програма ще покаже „Здравей, аз съм нишка“, тъй като при стартиране на приложението се създава потребителска нишка. В горния пример основната функция е началната точка на приложението и тя създава потребителска нишка.

Жизненият цикъл на една нишка

Следната диаграма показва жизнения цикъл на една нишка … вижте повече ››