Core
سطح
Екатеринбург

ThreadGroup

گروپ ۾ شايع ٿيل
صبح جو سلام ۽ نئون سال مبارڪ! مون کي ملٽي ٿريڊنگ بابت ٿورو وڌيڪ سمجهڻ ۾ مدد ڪريو، يعني ThreadGroup. مون گوگل ڪيو، پڙهيو، ۽ سمجھيو بنيادي مضمون: مقصد سيڪيورٽي آھي، ھڪڙي گروپ جي تنظيم ذريعي مربوط انتظام.
ٿريڊز کي انتظام ۽ سيڪيورٽي سببن لاءِ ٿريڊ گروپن ۾ ورهايو ويو آهي. ھڪڙي ٿريڊ گروپ جو تعلق ٻئي گروھ سان ٿي سگھي ٿو، مٿاھين سطح تي مکيه (سسٽم) گروپ سان ھڪڙي ترتيب ٺاھي سگھي ٿو. هڪ ئي وقت هڪ گروپ سان تعلق رکندڙ موضوعن کي ڪنٽرول ڪري سگهجي ٿو - توهان کي حق آهي ته گروپ جي سڀني موضوعن جي ڪم کي هڪ ئي وقت ۾ روڪيو يا انهن لاءِ هڪ وڌ ۾ وڌ عمل جي ترجيحي قيمت مقرر ڪريو. ٿريڊ گروپ پڻ استعمال ڪري سگھجن ٿا سيڪيورٽي ڊومينز کي بيان ڪرڻ لاءِ. ھڪڙي گروپ جي اندر موضوعن کي عام طور تي باہمي اثر جي امڪان سان نوازيو ويندو آھي، جيڪو پڻ نرالا گروپن جي سلسلي تائين وڌايو ويندو آھي. جڏهن اسان چئون ٿا ”اثر،“ اسان جو مطلب اهو آهي ته ڪنهن به طريقي واري ڪال ٿريڊ جي رويي کي متاثر ڪري سگهي ٿي، چئو، ان جي ترجيح کي تبديل ڪري، يا رڪاوٽ جو سبب بڻجي سگهي ٿي.
(ذريعو: ٽائيٽس )
ھڪڙي ھڪڙي سلسلي کي شروع ڪرڻ کان روڪڻ ۽ ھڪڙي قطار ۾ سڀني موضوعن کي روڪڻ لاء، ھڪڙي گروپ جو تصور متعارف ڪرايو ويو. هڪ موضوع صرف انهن موضوعن تي اثر انداز ڪري سگهي ٿو جيڪي ساڳئي گروپ ۾ آهن. هڪ ٿريڊ گروپ کي ThreadGroup ڪلاس جي نمائندگي ڪئي وئي آهي. هي تنظيم توهان کي وهڪري کي ناپسنديده خارجي اثرات کان بچائڻ جي اجازت ڏئي ٿي. هڪ ٿريڊ گروپ ٻين گروپن تي مشتمل ٿي سگھي ٿو، سڀني موضوعن ۽ گروپن کي ترتيب ڏيڻ جي اجازت ڏئي هڪ ترتيب واري وڻ ۾ جنهن ۾ هر ThreadGroup اعتراض، روٽ هڪ کان سواء، هڪ والدين آهي.
(ذريعو: ٽائيٽس ) مختلف مضمونن کي پڙهڻ کان پوء، مون هڪ ننڍڙو ڪوڊ لکڻ جو فيصلو ڪيو، جنهن ۾ مان هڪ گروپ جي هڪ سلسلي کان ٻئي گروپ جي وهڪري ۾ مداخلت ڪرڻ جي قابل نه هوندا. ۽ ڪجھ ڪم نه ڪيو: اھو مون کي مداخلت ڪرڻ جي اجازت ڏئي ٿو((( منھنجو ڪوڊ: مداخلت ڪرڻ ڇو ممڪن آھي؟ ھتي ٻاھر آھي: 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 прервана
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION