JavaRush /Java blogi /Random-UZ /ThreadGroup
Core
Daraja
Екатеринбург

ThreadGroup

Guruhda nashr etilgan
Xayrli kun va yangi yilingiz bilan! Ko'p ish zarralari, ya'ni ThreadGroup haqida bir oz ko'proq tushunishga yordam bering. Men Googleda qidirdim, o'qib chiqdim va asosiy mohiyatni tushundim: maqsad - xavfsizlik, guruhni tashkil qilish orqali integratsiyalashgan boshqaruv.
Mavzular boshqarilishi va xavfsizlik sabablari uchun mavzular guruhlariga guruhlangan. Bir ip guruhi yuqori darajadagi asosiy (tizim) guruh bilan ierarxiyani tashkil etuvchi boshqa guruhga tegishli bo'lishi mumkin. Guruhga tegishli bo'lgan mavzular bir vaqtning o'zida boshqarilishi mumkin - siz bir vaqtning o'zida guruhdagi barcha iplarning ishini to'xtatish yoki ular uchun yagona maksimal bajarish ustuvor qiymatini belgilash huquqiga egasiz. Mavzu guruhlari xavfsizlik domenlarini aniqlash uchun ham ishlatilishi mumkin. Guruh ichidagi iplar odatda o'zaro ta'sir qilish imkoniyatiga ega bo'lib, u ichki o'rnatilgan guruhlarning iplariga ham tegishli. "Ta'sir qilish" deganda, biz har qanday usul chaqiruvi ipning harakatiga ta'sir qilishi, aytaylik, uning ustuvorligini o'zgartirishi yoki uzilishga olib kelishi mumkinligini nazarda tutamiz.
(manba: Tyts )
Bitta ipning to'xtab qolishi va ketma-ket barcha iplarni uzishining oldini olish uchun guruh tushunchasi kiritildi. Ip faqat u bilan bir guruhdagi iplarga ta'sir qilishi mumkin. Mavzular guruhi ThreadGroup sinfi bilan ifodalanadi. Ushbu tashkilot oqimlarni kiruvchi tashqi ta'sirlardan himoya qilish imkonini beradi. Tarmoq guruhi boshqa guruhlarni o'z ichiga olishi mumkin, bu esa barcha mavzular va guruhlarni ierarxik daraxtda tashkil qilish imkonini beradi, unda ildizdan tashqari har bir ThreadGroup ob'ekti ota-onasiga ega.
(manba: Tyts ) Turli maqolalarni o'qib chiqqandan so'ng, men kichik kod yozishga qaror qildim, unda men bir guruhning bir ipidan boshqa guruhning oqimlarini to'xtata olmayman. Va nimadir ish bermadi: bu menga xalaqit berishga imkon beradi((( Mening kodim: Nima uchun uzilish mumkin? Mana natija: 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 прервана
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION