JavaRush /Blog Jawa /Random-JV /Multithreading ing Jawa

Multithreading ing Jawa

Diterbitake ing grup

Pambuka

Sadurunge sinau babagan serat Jawa, ayo dideleng ing mangsa ngarep. Mbayangno sampeyan ngirim resume lan duwe wawancara. Sampeyan lan sawetara rolas kolega mangsa wis diundang kanggo bisa ing perusahaan Software gedhe. Antarane kerepotan liyane, sampeyan kudu ngirim dokumen kertas kanggo kerja menyang karyawan HR sing kesel.
Multithreading ing Jawa - 1
Kanggo nyepetake proses kasebut, pelamar kanggo posisi kasebut bisa dipérang dadi rong klompok lan disebarake ing antarane rong manajer HR (yen ana ing perusahaan). Akibaté, kita nyepetake proses amarga karya desain paralel .
Multithreading ing Jawa - 2
Yen mung ana siji personel pejabat ing perusahaan, sampeyan kudu piye wae metu. Contone, sampeyan bisa mbagi maneh kabeh wong dadi rong klompok, contone, wawancara karo bocah-bocah wadon lan lanang.
Multithreading ing Jawa - 3
Utawa miturut prinsip liyane: amarga ana luwih akeh wong ing grup ngisor, kita bakal ngganti bocah wadon loro kanggo siji lanang.
Multithreading ing Jawa - 4
Cara ngatur karya iki diarani multi-threaded . Petugas HR sing kesel ngalih menyang macem-macem klompok kanggo njupuk karyawan sabanjure. Mungkin ana sewelas kelompok, lan papat petugas personel. Ing kasus iki, pangolahan multithreading bakal ditindakake kanthi paralel dening sawetara HR, sing bisa njupuk wong sabanjure saka klompok apa wae kanggo ngolah dokumen.

pangolahan

Proses ( proses ) ing kasus iki bakal dadi organisasi karya resepsi dokumen. Ing organisasi, sawetara proses bisa dibedakake: akuntansi, pangembangan piranti lunak, rapat karo klien, operasi gudang, lan liya-liyane. Sumber daya dialokasikan kanggo saben proses: papan, karyawan kanggo eksekusi. Proses kasebut diisolasi saka saben liyane: Petugas HR ora duwe akses menyang database akuntansi, lan manajer layanan pelanggan ora mlaku ing gudang. Yen proses kudu entuk akses menyang sumber daya wong liya, perlu kanggo nggawe komunikasi antar proses: memo, rapat gabungan.

Aliran

Karya ing proses diatur dadi utas ( java thread). Kanggo departemen SDM, aliran minangka organisasi kerja kanggo ngladeni klompok. Ing gambar pisanan ana siji aliran, ing telung sabanjuré ana loro. Ing proses kasebut, benang bisa dieksekusi kanthi paralel - loro pejabat HR nampa loro utawa luwih klompok karyawan sing bakal teka. Interaksi perwira personel karo kelompok - pangolahan benang ing sawijining proses - diarani sinkronisasi benang . Gambar desain rong klompok dening siji personel perwira nuduhake cara: seragam (cah wadon - lanang - prawan - lanang) lan karo prioritas beda (loro wadon sulih karo siji lanang). Utas duwe akses menyang sumber daya saka proses sing dadi kagungane: klompok kanggo pejabat HR diwenehi conto formulir aplikasi, pena kanggo ngisi dokumen. Nanging yen aliran sesambungan karo perkara sing umum, mula kedadeyan bisa kedadeyan. Yen petugas personel njaluk sampeyan nguwuh-uwuh jeneng wong pungkasan ing antrian, banjur, ing kasus rong klompok, dheweke ora yakin ing ngarep apa dheweke bakal krungu jeneng wanita utawa wong lanang. Konflik akses data kasebut, pamblokiran lan cara kanggo ngatasi masalah kasebut minangka topik sing penting banget.

Negara aliran

Saben thread ana ing salah siji negara ing ngisor iki:
  • Digawe ( New) - baris kanggo pejabat HR wis siyap, wong wis diatur.
  • Dibukak ( Runnable) - antrian kita wis diantrekake kanggo pejabat HR lan lagi diproses.
  • Diblokir ( Blocked) - wong lanang pungkasan ing antrian nyoba nguwuh jeneng, nanging nalika krungu yen bocah wadon ing grup sabanjure wiwit nindakake sadurunge dheweke, dheweke meneng.
  • Rampung ( Terminated) - kabeh antrian wis rampung dening petugas HR lan ora perlu.
  • Nunggu ( Waiting) - siji antrian nunggu sinyal saka liyane.
Organisasi utas lan interaksi kasebut minangka basis kanggo operasi proses sing efektif.

Ayo bali menyang jagad IT

Ing abad kaping 21, eksekusi multi-thread lan paralel wis dadi relevan. Wiwit 90s abad pungkasan, sistem operasi multitasking Windows, MacOS lan Linux wis mantep ing komputer ngarep. Sampeyan bisa kerep nemokake papat utawa luwih prosesor inti ing wong. Jumlah blok paralel kertu video GPU wis ngluwihi sewu. Program populer ditulis kanthi njupuk multithreading (multithreading), contone, piranti lunak versi modern kanggo ngolah grafis, video, utawa operasi kanthi jumlah data sing akeh: Adobe Photoshop, WinRar, Mathematica, game modern. Multithreading Jawa minangka topik sing penting banget, populer lan rumit. Mulane, ing kursus JavaRush ana akeh tugas kanggo mangerteni kanthi apik. Conto Jawa babagan multithreading bakal mbantu sampeyan nguwasani nuansa dhasar lan subtleties ing wilayah iki, nyinkronake karya benang.

Proses

Proses minangka conto sing mlaku saka program sing Sistem Operasi (OS) wis ngalokasi memori, wektu/inti prosesor, lan sumber daya liyane. Penting yen memori diparengake kanthi kapisah; spasi alamat saka proses sing beda-beda ora bisa diakses saben liyane. Yen proses kudu komunikasi, bisa nggunakake file, pipa, lan cara komunikasi antar proses liyane.

Aliran

Jawa Thread(alur). Kadhangkala, kanggo ngindhari kebingungan karo kelas Jawa liyane Streamlan liya-liyane, serat-serat Jawa asring diterjemahake dadi utas. Dheweke nggunakake sumber daya sing diparengake kanggo proses lan minangka cara proses kasebut ditindakake. Utas utama nglakokake metode mainlan metu. Nalika proses kaleksanan, Utas tambahan (Utas anak) bisa spawned. Utas saka proses sing padha bisa ngganti data karo siji liyane. Multithreading Java mbutuhake sinkronisasi data, aja lali babagan iki. Ing Jawa, sawijining proses mungkasi nalika utas pungkasan wis rampung. Kanggo tugas latar mburi, utas bisa diwiwiti minangka daemon ( daemon), prabédan saka sing biasa yaiku bakal diakhiri kanthi paksa nalika kabeh non- daemonutas proses diakhiri.

Aplikasi multi-Utas pisanan

Ana luwih saka setengah rolas cara kanggo nggawe utas; ing kursus JavaRush kita bakal nliti kanthi rinci. Kaping pisanan, ayo kenalan karo salah sawijining dhasar. Ana kelas khusus Threading cara run()sampeyan kudu nulis kode sing ngetrapake logika program kasebut. Sawise nggawe utas, sampeyan bisa miwiti kanthi nelpon start(). Ayo nulis program demo sing ngetrapake conto multithreading Jawa.
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(); //Запускаем вторую (дочерний поток)
    }
}
Ayo miwiti program. Konsol nampilake output pesen saka utas utama. Sabanjure, saben thread anak queue1siji queue2output pesen menyang console umum babagan karyawan sing diproses sabanjure. Salah siji opsi kanggo program:
Начали!
Обработаны documentы: Мария
Обработаны documentы: Ivan
Обработаны documentы: Людмила
Обработаны documentы: Сергей
Обработаны documentы: Алиса
Обработаны documentы: Николай
Обработаны documentы: Карина
Обработаны documentы: Фердинанд
Обработаны documentы: Ольга
Обработаны documentы: Васorй

Process finished with exit code 0
Multithreading ing Jawa minangka topik sing rumit lan macem-macem. Kemampuan kanggo nulis kode nggunakake komputasi paralel, mbukak akeh tugas lan multithreaded bakal mbantu sampeyan ngleksanakake tugas kanthi efektif ing prosesor lan kluster multi-inti modern sing dumadi saka akeh komputer.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION