Многонишково програмиране и синхронизация на нишки в Java
Многонишкови програми
Многонишковите (multithreaded) програми представляват програми, които могат да изпълняват едновременно няколко редици от програмни инструкции. Всяка такава редица от програмни инструкции наричаме thread (нишка). Изпълнението на многонишкова програма много прилича на изпълнение на няколко програми едновременно. Например в Microsoft Windows е възможно едновременно да слушаме музика, да теглим файлове от Интернет и да въвеждаме текст. Тези три действия се изпълняват от три различни програми (процеси), които работят едновременно. Когато няколко процеса в една операционна система работят едновременно, това се нарича многозадачност. Когато няколко отделни нишки в рамките на една програма работят едновременно, това се нарича multithreading (многонишковост). Например ако пишем програма, която работи като Web-сървър и Mail-сървър едновременно, то тази програма трябва да може да изпълнява едновременно поне 3 независими нишки – една за обслужване на Web заявките (по протокол HTTP), друга за изпращане на поща (по протокол SMTP) и трета за теглене на поща (по протокол POP3). Много вероятно е освен това за всеки потребител на тази програма да се създава по още една нишка, за да може този потребител да се обслужва независимо от другите и да не бъде каран да чака, докато системата обслужва останалите.
1 посетител чете този урок (0 потребители и 1 гост)
Активни потребители:
---
Имам един въпрос относно имплементацията на SharedQueue. Не е ли по-удачно да се синхронизира по самата опашка, а не по wrapper обекта й? Реално в момента имплементацията е корктна, но могат да се получат проблеми при extend-ване на съшествуващата функционалност. Най-общо казано критичния ресурс е масива съхраняващ продуктите, а не пакетиращият го клас. Това е моето мнение и ще се радвам да ме поправите, ако бъркам нещо.