Giriş
Java sapaklaryny öwrenmezden ozal, ýakyn geljege seredeliň. Rezýumeňizi tabşyryp, söhbetdeşlik geçirendigiňizi göz öňüne getiriň. Siz we geljekki onlarça kärdeşiňiz uly programma üpjünçiliginde işlemäge çagyryldy. Beýleki kynçylyklaryň arasynda ýadaw işgär işgärine işlemek üçin kagyz resminamalaryny tabşyrmaly.
Bu işi çaltlaşdyrmak üçin bu wezipä dalaş edýänleri iki topara bölüp we iki kadr dolandyryjysynyň arasynda paýlap bolýar (kompaniýada bar bolsa). Netijede, parallel
dizaýn işleri sebäpli prosesi çaltlaşdyrýarys.
Kompaniýada diňe bir işgär bar bolsa, nämüçindir çykmaly bolarsyňyz. Mysal üçin, hemmäňizi ýene iki topara bölüp bilersiňiz, mysal üçin gyzlar we oglanlar bilen söhbetdeşlik geçiriň.
Ora-da başga bir ýörelge görä: aşaky toparda has köp adam bolansoň, iki gyzy bir oglan üçin çalyşarys.
Işi guramagyň bu usulyna köp sapakly diýilýär . Tiredadaw kadr işgärimiz, indiki işgäri işe almak üçin dürli toparlara geçýär. Belki, on bir topar we dört işgär bar. Bu ýagdaýda köp okalýan gaýtadan
işlemek birnäçe kadrlar bilen paralel bolup, resminamalary gaýtadan işlemek üçin islendik topardan indiki adamy alyp biler.
Amallar
Bu ýagdaýda proses (
proses ) resminamalary kabul etmek işini guramak bolar. Bir guramada birnäçe amallary tapawutlandyryp bolar: buhgalteriýa, programma üpjünçiligini işläp düzmek, müşderiler bilen duşuşyklar, ammar amallary we ş.m. Her proses üçin çeşmeler bölünýär: jaýlar, ýerine ýetiriş üçin işgärler. Amallar biri-birinden üzňe: HR işgärleriniň buhgalteriýa maglumatlar bazasyna girip bilmeýärler we müşderi hyzmatynyň ýolbaşçylary ammaryň töwereginde işlemeýärler. Bir proses başga biriniň çeşmelerine girmek üçin zerur bolsa, prosesara aragatnaşygy ýola goýmaly: ýatlamalar, bilelikdäki ýygnaklar.
Akymlar
Bir prosesde işlemek sapaklara bölünýär (
java thread
). Kadrlar bölümi üçin akym, bir topara hyzmat etmek üçin iş guramakdyr. Ilkinji suratda bir akym bar, indiki üçde ikisi bar. Bu işiň dowamynda sapaklar paralel ýerine ýetirilip bilner - iki işgär işgäri geljekki işgärleriň iki ýa-da has köp toparyny kabul edýär. Işgärleriň toparlar bilen özara gatnaşygy - sapaklaryň içinde gaýtadan işlemek -
sapaklaryň sinhronizasiýasy diýilýär . Bir işgär tarapyndan iki toparyň dizaýnynyň çyzgylary usullary görkezýär: forma (gyz - oglan - gyz - oglan) we dürli ähmiýetli (iki gyz bir oglan bilen çalşylýar). Tekstler özlerine degişli prosesiň çeşmelerine elýeterlidir: işgärler toparyna toparlara resminamalary doldurmak üçin anketalaryň nusgalary, ruçkalar berilýär. Emma akymlar umumy zatlar bilen täsirleşýän bolsa, hadysalar bolup biler. Işgärler nobatdaky iň soňky adamyň adyny gygyrmagyňyzy haýyş etse, iki topar bolsa, aýalyň adyny ýa-da erkek adyny eşidjekdigini öňünden bilmeýär. Şeýle maglumatlara girmek gapma-garşylyklary, petiklemek we olary çözmegiň ýollary gaty möhüm mowzuk.
Akym ýagdaýy
Her sapak aşakdaky ýagdaýlaryň birinde:
- Döredilen (
New
) - işgärler bölüminiň hatary taýýarlanýar, adamlar tertipleşýärler.
- Işledildi (
Runnable
) - nobatymyz işgärler üçin hatara düzüldi we gaýtadan işlenýär.
- Bloklanan (
Blocked
) - nobatyň iň soňky ýigidi bir at gygyrmaga synanyşýar, ýöne indiki topardaky gyzyň muny edip başlandygyny eşidip, dymdy.
- Tamamlandy (
Terminated
) - ähli nobat kadr işgäri tarapyndan tamamlandy we muňa zerurlyk ýok.
- Garaşmak (
Waiting
) - bir nobat beýlekisinden signal garaşýar.
Saplaryň tertibi we olaryň özara täsiri prosesleriň netijeli işlemegi üçin esas bolup durýar.
IT dünýäsine gaýdyp geleliň
21-nji asyrda köp sapakly we parallel ýerine ýetiriş aktual boldy. Geçen asyryň 90-njy ýyllaryndan başlap, köp kompýuterli Windows, MacOS we Linux öý kompýuterlerinde berk ornaşdy. Olarda köplenç dört ýa-da has esasy prosessor tapyp bilersiňiz. GPU wideo kartalarynyň parallel bloklarynyň sany eýýäm müňden geçdi. Meşhur programmalar köp okalýan (köp okalýan), mysal üçin grafikany, wideony gaýtadan işlemek ýa-da köp mukdarda maglumat bilen işlemek üçin programma üpjünçiliginiň häzirki zaman wersiýalaryny göz öňünde tutup ýazylýar: Adobe Photoshop, WinRar, Mathematica, häzirki zaman oýunlary. Java köp okamak gaty möhüm, meşhur we çylşyrymly mowzuk. Şonuň üçin JavaRush kursynda gaty gowy düşünmek üçin köp meseleler bar. Köp okalýan Java mysallary, sapaklaryň işini sinhronlamak bilen bu ugurdaky esasy nuanslary we inçelikleri özleşdirmäge kömek eder.
Amal
Amal, Operasiýa ulgamynyň (OS) ýady, prosessor wagtyny / ýadrosyny we beýleki çeşmeleri paýlaýan programmanyň işleýän mysalydyr. Memoryadyň aýratyn bölünmegi möhümdir, dürli prosesleriň salgy giňişlikleri biri-birine girip bilmez. Amallar habarlaşmak zerur bolsa, faýllary, turbalary we beýleki aragatnaşyk aragatnaşyk usullaryny ulanyp bilerler.
Akym
Java
Thread
(akym).
Stream
Käwagt, beýleki Java synplary we şuňa meňzeşler bilen bulaşmazlyk üçin Java sapaklary köplenç sapak hökmünde terjime edilýär. Bir prosese bölünen çeşmeleri ulanýarlar we amalyň ýerine ýetiriliş usulydyr. Esasy sapak usuly ýerine ýetirýär
main
we çykýar. Amal ýerine ýetirilende goşmaça sapaklar (çaga sapaklary) döräp biler. Şol bir prosesiň sapaklary biri-biri bilen maglumat çalşyp biler. Java köp okalmagy maglumatlaryň sinhronlaşmagyny göz öňünde tutmagy talap edýär, muny ýatdan çykarmaň. Java-da soňky sapak gutarandan soň bir proses gutarýar. Fon meseleleri üçin, daemon () görnüşinde bir sapak başlap bolar
daemon
, adaty birinden tapawudy,
daemon
prosesiň ähli sapaklary ýok bolanda zor bilen ýatyrylar.
Ilki köp sapakly programma
Saplar döretmegiň ýarymdan gowrak usuly bar; JavaRush kursynda olary jikme-jik öwreneris. Ilki bilen esasylardan biri bilen tanyşalyň. Programmanyň logikasyny ýerine ýetirýän kod ýazmaly usulda
Thread
ýörite synp bar .
run()
Bir sapak döredeniňizden soň, jaň edip başlap bilersiňiz
start()
. Java köp okamagyň mysalyny ýerine ýetirýän demo programmasyny ýazalyň.
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();
}
}
Geliň, programmany başlalyň. Konsol esasy sapakdan habaryň çykyşyny görkezýär. Ondan soň, her bir çaga sapagy öz
queue1
gezeginde
queue2
indiki işlenýän işgär hakda umumy konsolyna habar iberýär. Programma üçin mümkin bolan wariantlaryň biri:
Начали!
Обработаны documentы: Мария
Обработаны documentы: Ivan
Обработаны documentы: Людмила
Обработаны documentы: Сергей
Обработаны documentы: Алиса
Обработаны documentы: Николай
Обработаны documentы: Карина
Обработаны documentы: Фердинанд
Обработаны documentы: Ольга
Обработаны documentы: Васorй
Process finished with exit code 0
Java-da köp okamak çylşyrymly we köptaraply mowzuk. Paralel, köp basgançakly we köp okalýan hasaplamany ulanyp kod ýazmak ukyby, köp kompýuterlerden ybarat häzirki zaman köp ýadroly prosessorlarda we toparlarda meseleleri netijeli ýerine ýetirmäge kömek eder.
GO TO FULL VERSION