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.
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 .
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.
Utawa miturut prinsip liyane: amarga ana luwih akeh wong ing grup ngisor, kita bakal ngganti bocah wadon loro kanggo siji lanang.
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
Stream
lan 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
main
lan 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-
daemon
utas 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
Thread
ing 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 {
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();
}
}
Ayo miwiti program. Konsol nampilake output pesen saka utas utama. Sabanjure, saben thread anak
queue1
siji
queue2
output 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.
GO TO FULL VERSION