Муқаддима
Пеш аз омӯхтани риштаҳои Java, биёед ба ояндаи наздик назар кунем. Тасаввур кунед, ки шумо резюмеи худро пешниҳод кардед ва мусоҳиба доштед. Шумо ва якчанд даҳҳо ҳамкорони ояндаро барои кор дар як ширкати бузурги нармафзор даъват кардаанд. Дар байни дигар мушкилот, шумо бояд ҳуҷҷатҳои коғазиро барои кор ба корманди хастагии HR пешниҳод кунед.
Барои суръат бахшидан ба ин раванд, довталабонро ба ин мавқеъ метавон ба ду гурӯҳ тақсим кард ва дар байни ду менеҷери кадрҳо тақсим кард (агар дар ширкат вуҷуд дошта бошад).
Натичаи хамин аст, ки мо аз хисоби кори параллели лоихакашй процессро тезонем .
Агар дар ширкат танҳо як корманди кадрӣ бошад, пас шумо бояд бо ягон роҳ берун равед. Масалан, шумо метавонед ҳамаро дубора ба ду гурӯҳ тақсим кунед, масалан, бо навбат бо духтарон ва писарон мусоҳиба кунед.
Ё аз рӯи принсипи дигар: азбаски дар гурӯҳи поёнӣ одамон зиёданд, ба як писар ду духтарро иваз мекунем.
Ин тарзи ташкor кор
бисёрсоҳавӣ номида мешавад . Корманди HR хастаи мо ба гурӯҳҳои гуногун мегузарад, то корманди навбатиро аз онҳо ҷалб кунад. Шояд ёздаҳ гурӯҳ ва чаҳор афсари кадрӣ вуҷуд дошта бошанд. Дар ин ҳолат
коркарди бисёрҷабҳа дар баробари якчанд HR сурат мегирад, ки онҳо метавонанд шахси навбатиро аз ҳар гурӯҳ барои коркарди ҳуҷҷатҳои худ бигиранд.
Равандҳо
Раванди (
раванди ) дар ин ҳолат ташкor кори қабули ҳуҷҷатҳо хоҳад буд. Дар ташкилот якчанд равандро фарқ кардан мумкин аст: баҳисобгирии муҳосибӣ, таҳияи нармафзор, вохӯрӣ бо мизоҷон, амалиёти анборҳо ва ғайра. Барои ҳар як раванд захираҳо ҷудо карда мешаванд: биноҳо, кормандон барои иҷрои он. Равандҳо аз ҳамдигар ҷудо шудаанд: кормандони кадрҳо ба базаи баҳисобгирии муҳосибӣ дастрасӣ надоранд ва роҳбарони хидматрасонии муштариён дар гирду атрофи анбор намедаванд. Агар раванд лозим ояд, ки ба захираҳои ягон каси дигар дастрасӣ пайдо кунад, бояд робитаи байни равандҳо таъсис дода шавад: ёддоштҳо, вохӯриҳои муштарак.
Ҷараёнҳо
Кор дар раванд ба риштаҳо ташкил карда шудааст (
java thread
). Барои шӯъбаи кадрҳо, ҷараён ташкor кор барои хидмат ба гурӯҳ аст. Дар худи расми аввал як ҷараён, дар сеи дигар ду. Дар доираи раванд, риштаҳо метавонанд дар як вақт иҷро карда шаванд - ду корманди кадрӣ ду ё зиёда гурӯҳи кормандони ояндаро қабул мекунанд. Муомилоти мутақобилаи афсарони кадрҳо бо гурӯҳҳо - коркарди риштаҳо дар дохor раванд -
ҳамоҳангсозии ришта номида мешавад . Дар расмҳои тарҳрезии ду гурӯҳ аз ҷониби як корманди кадрӣ усулҳо нишон дода шудаанд: либоси ягона (духтар - писар - духтар - писар) ва бо афзалиятҳои гуногун (ду духтар бо як писар. Риштаҳо ба захираҳои раванде, ки ба онҳо тааллуқ доранд, дастрасӣ доранд: ба гурӯҳҳо ба корманди кадрҳо намунаҳои варақаҳои ариза, қалам барои пур кардани ҳуҷҷатҳо дода мешаванд. Аммо агар ҷараёнҳо бо чизҳои умумӣ барои онҳо ҳамкорӣ кунанд, пас ҳодисаҳо имконпазиранд. Агар афсари кадрҳо аз шумо хоҳиш кунад, ки номи шахси охирини навбатдорро фарёд занед, пас, дар мавриди ду гурӯҳ, ӯ пешакӣ мутмаин нест, ки номи зан ё мардро мешунавад. Чунин ихтилофҳои дастрасии додаҳо, басташавӣ ва роҳҳои ҳалли онҳо мавзӯи хеле муҳим мебошанд.
Ҳолати ҷараён
Ҳар як ришта дар яке аз ҳолатҳои зерин аст:
- Эҷод карда шуд (
New
) - хатти корманди кадрҳо омода мешавад, одамон ташкил мешаванд.
- Ба кор андохта шуд (
Runnable
) - навбати мо барои корманди кадрҳо тартиб дода шудааст ва коркард мешавад.
- Бастан (
Blocked
) – бачае, ки дар навбат меистод, кӯшиш мекунад, ки ном барорад, аммо чун шунид, ки духтари гурӯҳи дигар ин корро пеш аз ӯ оғоз кардааст, хомӯш монд.
- Анҷом шуд (
Terminated
) - тамоми навбат аз ҷониби корманди кадрҳо пур карда шудааст ва ба он лозим нест.
- Интизорӣ(
Waiting
) – як навбат интизори сигнали дигар аст.
Ташкor риштаҳо ва таъсири мутақобилаи онҳо асоси кори самараноки равандҳо мебошад.
Биёед ба ҷаҳони IT баргардем
Дар асри 21 иҷроиши бисёрсоҳавӣ ва параллелӣ аҳамияти калон пайдо кардааст. Аз солҳои 90-уми асри гузашта дар компютерҳои хонагӣ системаҳои оператсионии бисёрҷабҳаи Windows, MacOS ва Linux устувор гаштанд. Дар онҳо шумо аксар вақт чор ё зиёда протсессори аслӣ пайдо карда метавонед. Шумораи блокҳои параллели кортҳои видеоии GPU аллакай аз ҳазор гузаштааст. Барномаҳои маъмул бо дарназардошти бисёрсоҳавӣ (мултитридия) навишта мешаванд, масалан, versionҳои муосири нармафзор барои коркарди графика, видео ё кор бо миқдори зиёди додаҳо: Adobe Photoshop, WinRar, Mathematica, бозиҳои муосир. Якчанд риштаи Java як мавзӯи хеле муҳим, маъмул ва мураккаб аст. Аз ин рӯ, дар курси JavaRush барои хуб фаҳмидани он вазифаҳои зиёде мавҷуданд. Намунаҳои Java оид ба multithreading ба шумо барои азхуд кардани нозукиҳо ва нозукиҳои асосии ин соҳа, ҳамоҳангсозии кори риштаҳо кӯмак мекунанд.
Раванд
Раванд як мисоли иҷрошавандаи барномаест, ки ба он Системаи Оператсионӣ (OS) хотира, вақти протсессор/ядроҳо ва дигар захираҳоро ҷудо кардааст. Муҳим он аст, ки хотира алоҳида ҷудо карда мешавад, фазои суроғаҳои равандҳои гуногун ба ҳамдигар дастрас нестанд. Агар равандҳо ба муошират ниёз дошта бошанд, онҳо метавонанд ин корро бо истифода аз файлҳо, қубурҳо ва дигар усулҳои иртибот байни равандҳо анҷом диҳанд.
Ҷараён
Java
Thread
(ҷараён). Баъзан, барои пешгирӣ кардани иштибоҳ бо дигар синфҳои Java
Stream
ва монанди ин, риштаҳои Java аксар вақт ҳамчун ришта тарҷума карда мешаванд. Онҳо захираҳои ба раванд ҷудошударо истифода мебаранд ва роҳи иҷрои раванд мебошанд. Риштаи асосӣ методро иҷро мекунад
main
ва мебарояд. Вақте ки раванд иҷро мешавад, риштаҳои иловагӣ (риштаҳои кӯдакона) метавонанд пайдо шаванд. Риштаҳои як раванд метавонанд бо ҳамдигар маълумот мубодила кунанд. Java multithreading синхронизатсияи маълумотро ба назар гирифтанро талаб мекунад, инро фаромӯш накунед. Дар Java, раванд пас аз анҷоми риштаи охирини он қатъ мешавад. Барои вазифаҳои замина, риштаро ҳамчун демон ( ) оғоз кардан мумкин аст , фарқият аз кори муқаррарӣ дар он аст, ки онҳо ҳангоми қатъ шудани ҳамаи риштаҳои ғайридавлатии раванд
daemon
маҷбуран қатъ карда мешаванд .
daemon
Аввалин барномаи бисёрсоҳавӣ
Зиёда аз ним даҳҳо роҳҳои эҷоди риштаҳо мавҷуданд; дар курси JavaRush мо онҳоро ба таври муфассал баррасӣ хоҳем кард. Аввалан, биёед бо яке аз асосҳо шинос шавем. Синфи махсусе мавҷуд аст, ки
Thread
дар усули
run()
он шумо бояд codeеро нависед, ки мантиқи барномаро амалӣ мекунад. Пас аз сохтани ришта, шумо метавонед онро бо занг задан ба
start()
. Биёед як барномаи намоишӣ нависем, ки намунаи Java multithreading-ро амалӣ мекунад.
class PeopleQueue extends Thread {
private String[] names;
PeopleQueue(String... names) {
this.names = names;
}
@Override
public void run() {
for (int i = 0; i < names.length; i++) {
System.out.println("Обработаны documentы: " + names[i]);
try {
sleep(500);
} catch (Exception e) {}
}
}
}
public class HR {
public static void main(String[] args) {
PeopleQueue queue1 = new PeopleQueue("Ivan","Сергей","Николай","Фердинанд","Basil");
PeopleQueue queue2 = new PeopleQueue("Мария","Людмила","Алиса","Карина","Olga");
System.out.println("Начали!");
queue1.start();
queue2.start();
}
}
Биёед барномаро оғоз кунем. Консол баромади паёмро аз риштаи асосӣ нишон медиҳад. Баъдан, ҳар як риштаи кӯдак
queue1
дар
queue2
навбати худ ба консоли умумии худ дар бораи корманди ояндаи коркардшуда паёмҳо медиҳад. Яке аз имконоти имконпазири барнома:
Начали!
Обработаны documentы: Мария
Обработаны documentы: Ivan
Обработаны documentы: Людмила
Обработаны documentы: Сергей
Обработаны documentы: Алиса
Обработаны documentы: Николай
Обработаны documentы: Карина
Обработаны documentы: Фердинанд
Обработаны documentы: Ольга
Обработаны documentы: Васorй
Process finished with exit code 0
Мултисадо дар Java як мавзӯи мураккаб ва бисёрҷанба аст. Қобorяти навиштани code бо истифода аз ҳисоббарории параллелӣ, мултипликаторӣ ва бисёрсоҳавӣ ба шумо дар иҷрои самараноки вазифаҳо дар протсессорҳои муосир ва кластерҳои аз бисёр компютерҳо иборат кӯмак мерасонад.
GO TO FULL VERSION