JavaRush /Java Blogu /Random-AZ /Mövzu Qrupu
Core
Səviyyə
Екатеринбург

Mövzu Qrupu

Qrupda dərc edilmişdir
Günortanız xeyir və yeni iliniz mübarək! ThreadGroup kimi multithreading haqqında bir az daha çox başa düşməyə kömək edin. Google-da axtardım, oxudum və əsas mahiyyəti başa düşdüm: məqsəd təhlükəsizlik, qrupun təşkili ilə inteqrasiya olunmuş idarəetmədir.
Mövzular idarə oluna bilmə və təhlükəsizlik səbəbi ilə mövzu qruplarına qruplaşdırılıb. Bir ip qrupu digər qrupa aid ola bilər, yuxarı səviyyədə əsas (sistem) qrupu ilə iyerarxiya təşkil edir. Qrupa aid olan mövzular eyni zamanda idarə oluna bilər - sizin qrupdakı bütün iplərin işini bir anda dayandırmaq və ya onlar üçün vahid maksimum icra prioritet dəyəri təyin etmək hüququnuz var. Mövzu qrupları təhlükəsizlik domenlərini müəyyən etmək üçün də istifadə edilə bilər. Qrup daxilindəki iplər, adətən, qarşılıqlı təsir imkanlarına malikdir ki, bu da iç-içə qrupların iplərini əhatə edir. "Təsir" dedikdə, hər hansı bir metod çağırışının ipin davranışına təsir edə biləcəyini, məsələn, prioritetini dəyişdirə biləcəyini və ya kəsilməyə səbəb ola biləcəyini nəzərdə tuturuq.
(mənbə: Tyts )
Tək bir ipin ard-arda bütün ipləri dayandırmağa və kəsməyə başlamasının qarşısını almaq üçün qrup anlayışı təqdim edildi. Bir ip yalnız onunla eyni qrupda olan mövzulara təsir göstərə bilər. Mövzu qrupu ThreadGroup sinfi ilə təmsil olunur. Bu təşkilat axınları arzuolunmaz xarici təsirlərdən qorumağa imkan verir. Mövzu qrupu digər qrupları ehtiva edə bilər ki, bu da bütün mövzuların və qrupların kök obyekt istisna olmaqla, hər bir ThreadGroup obyektinin valideynə malik olduğu iyerarxik ağac şəklində təşkil edilməsinə imkan verir.
(mənbə: Tyts ) Müxtəlif məqalələri oxuduqdan sonra mən kiçik bir kod yazmağa qərar verdim ki, orada bir qrupun bir mövzusundan başqa bir qrupun axınlarını kəsə bilməyəcəm. Və bir şey alınmadı: mənə müdaxilə etməyə imkan verir((( Kodum: Niyə müdaxilə etmək mümkündür? Budur nəticə: 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 прервана
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION