JavaRush /Java Blog /Random-TK /Java-da köp okamak

Java-da köp okamak

Toparda çap edildi

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.
Java-da köp okamak - 1
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.
Java-da köp okamak - 2
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ň.
Java-da köp okamak - 3
Ora-da başga bir ýörelge görä: aşaky toparda has köp adam bolansoň, iki gyzy bir oglan üçin çalyşarys.
Java-da köp okamak - 4
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). StreamKä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 mainwe ç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, daemonprosesiň ä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    {// Наша очередь из сотрудников, наследник класса Thread
    private String[] names;

    PeopleQueue(String... names) {// Конструктор, аргумент- массив имен сотрудников
        this.names = names;
    }

    @Override
    public void run() { // Этот метод будет вызван при старте потока
        for (int i = 0; i < names.length; i++) { // Вывод в цикле с паузой 0.5 сек очередного сотрудника
            System.out.println("Обработаны documentы: " + names[i]);
            try {
                sleep(500); // Задержка в 0.5 сек
            } 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 queue1gezeginde queue2indiki 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.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION