Core
tingkat
Екатеринбург

Grup Utas

Diterbitake ing grup
Sugeng sonten lan sugeng taun anyar! Tulung aku ngerti sethithik babagan multithreading, yaiku ThreadGroup. Aku Googled, maca, lan ngerti inti utama: tujuane keamanan, manajemen terpadu liwat organisasi klompok.
Utas diklompokaké dadi klompok utas kanggo alasan sing bisa diatur lan keamanan. Siji klompok utas bisa dadi klompok liya, mbentuk hirarki kanthi klompok utama (sistem) ing tingkat paling dhuwur. Utas sing ana ing klompok bisa dikontrol bebarengan - sampeyan duwe hak ngganggu karya kabeh utas ing grup kasebut bebarengan utawa nyetel nilai prioritas eksekusi maksimal kanggo wong-wong mau. Kelompok thread uga bisa digunakake kanggo nemtokake domain keamanan. Utas ing sawijining klompok biasane dianugerahi kemungkinan pengaruhe bebarengan, sing uga nyebar menyang benang klompok bersarang. Nalika kita ngomong "pengaruh," kita ateges sing sembarang cara nelpon bisa mengaruhi prilaku thread, ngomong, ngganti prioritas, utawa nimbulaké gangguan.
(Sumber: Tyts )
Kanggo nyegah siji utas wiwit mandheg lan ngganggu kabeh utas ing saurutan, konsep klompok dienalake. Utas mung bisa mangaruhi utas sing ana ing grup sing padha. Klompok utas diwakili dening kelas ThreadGroup. Organisasi iki ngidini sampeyan nglindhungi aliran saka pengaruh eksternal sing ora dikarepake. Klompok utas bisa ngemot grup liyane, ngidini kabeh utas lan grup bisa diatur dadi wit hierarkis sing saben obyek ThreadGroup, kajaba oyot, duwe wong tuwa.
(sumber: Tyts ) Sawise maca macem-macem artikel, aku mutusake kanggo nulis kode cilik sing aku ora bakal bisa ngganggu aliran grup liyane saka siji thread saka siji grup. Lan ana sing ora bisa ditindakake: ngidini aku ngganggu ((( Kodeku: Kenapa bisa ngganggu? Iki output: public class Test { public static ArrayList threads = new ArrayList (); public static ArrayList groups = new ArrayList (); public static void main(String[] args) throws InterruptedException { final ThreadGroup group1 = new ThreadGroup("GROUP 1"); final ThreadGroup group2 = new ThreadGroup("GROUP 2"); final ThreadGroup group3 = new ThreadGroup("GROUP 3"); groups.add(group1); groups.add(group2); groups.add(group3); for (int i = 0; i < groups.size(); i++) { for (int j = 1; j < 5; j++) { Thread thread = new Thread(groups.get(i), "THREAD №" + j) { @Override public void run() { while (!isInterrupted()) { try { Thread.sleep(500); } catch (InterruptedException e) { System.out.println(getName() + " : " + getThreadGroup().getName() + " прервана"); } } } }; threads.add(thread); thread.start(); } } Thread thread = new Thread(group1, "THREAD №5") { @Override public void run() { group2.interrupt(); while (true); } }; thread.start(); threads.add(thread); for (Thread t : threads) System.out.println(t); } } Thread[THREAD №1,5,GROUP 1] Thread[THREAD №2,5,GROUP 1] Thread[THREAD №3,5,GROUP 1] Thread[THREAD №4,5,GROUP 1] Thread[THREAD №1,5,GROUP 2] Thread[THREAD №2,5,GROUP 2] Thread[THREAD №3,5,GROUP 2] Thread[THREAD №4,5,GROUP 2] Thread[THREAD №1,5,GROUP 3] Thread[THREAD №2,5,GROUP 3] Thread[THREAD №3,5,GROUP 3] Thread[THREAD №4,5,GROUP 3] Thread[THREAD №5,5,GROUP 1] THREAD №1 : GROUP 2 прервана THREAD №2 : GROUP 2 прервана THREAD №4 : GROUP 2 прервана THREAD №3 : GROUP 2 прервана
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION