JavaRush /Java Blog /Random-TK /ThreadGroup
Core
Dereje
Екатеринбург

ThreadGroup

Toparda çap edildi
Günüňiz haýyrly we täze ýylyňyz gutly bolsun! Köp okamak hakda, ýagny “ThreadGroup” hakda birneme has köp düşünmäge kömek ediň. Esasy manysyny gözledim, okadym we düşündim: maksat howpsuzlyk, toparyň guramasy arkaly toplumlaýyn dolandyryş.
Dolandyryş we howpsuzlyk sebäpli mowzuklar sapak toparlaryna bölünýär. Bir sapak topary ýokarky topara esasy (ulgam) topary bilen iýerarhiýa döredip, başga bir topara degişli bolup biler. Bir topara degişli sapaklary şol bir wagtyň özünde dolandyryp bolýar - topardaky ähli sapaklaryň işini birbada kesmäge ýa-da olar üçin iň ýokary ýerine ýetiriş ähmiýetini kesgitlemäge hakyňyz bar. Howa domenlerini kesgitlemek üçin sapak toparlary hem ulanylyp bilner. Toparyň içindäki sapaklar, adatça, özara täsir etmek mümkinçiligi berilýär, bu hem höwürtgeleýän toparlaryň sapaklaryna çenli uzalýar. "Täsir" diýlende, islendik usul jaňy sapagyň özüni alyp barşyna täsir edip biler, diýmek, ähmiýetini üýtgedip ýa-da kesilmegine sebäp bolup biler.
(çeşme: Tyts )
Threadeke sapaklaryň yzygiderli durmagynyň we kesilmeginiň öňüni almak üçin topar düşünjesi girizildi. Bir sapak diňe özi bilen bir topardaky sapaklara täsir edip biler. Bir sapak topary, “ThreadGroup” synpy bilen görkezilýär. Bu gurama akymlary islenilmeýän daşarky täsirlerden goramaga mümkinçilik berýär. Bir sapak topary, beýleki sapaklary we toparlary iýerarhiki agaçda tertipleşdirmäge mümkinçilik berýän beýleki toparlary öz içine alyp biler, kökden başga her bir ThreadGroup obýektiniň ene-atasy bar.
(çeşme: Tyts ) Dürli makalalary okanymdan soň, bir toparyň bir sapagyndan başga bir toparyň akymyna päsgel berip bilmejek kiçijik kod ýazmagy makul bildim. Bir zat netije bermedi: maňa päsgel bermäge mümkinçilik berýär ((( Kodym: Näme üçin kesmek mümkin? Ine, çykyş: 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 прервана
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION