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

ThreadGroup

Nai-publish sa grupo
Magandang hapon at manigong bagong taon! Tulungan akong maunawaan ang higit pa tungkol sa multithreading, katulad ng ThreadGroup. Nag-Google ako, nagbasa, at naunawaan ang pangunahing diwa: ang layunin ay seguridad, pinagsamang pamamahala sa pamamagitan ng organisasyon ng isang grupo.
Ang mga thread ay pinagsama-sama sa mga pangkat ng thread para sa pamamahala at mga kadahilanang pangseguridad. Ang isang pangkat ng thread ay maaaring kabilang sa isa pang pangkat, na bumubuo ng isang hierarchy na may pangunahing (system) na pangkat sa pinakamataas na antas. Ang mga thread na kabilang sa isang grupo ay maaaring kontrolin nang sabay-sabay - may karapatan kang matakpan ang gawain ng lahat ng mga thread sa grupo nang sabay-sabay o magtakda ng isang maximum na halaga ng priyoridad sa pagpapatupad para sa kanila. Magagamit din ang mga pangkat ng thread upang tukuyin ang mga domain ng seguridad. Ang mga thread sa loob ng isang grupo ay kadalasang pinagkalooban ng posibilidad ng magkaparehong impluwensya, na umaabot din sa mga thread ng mga nested na grupo. Kapag sinabi naming "impluwensiya," ang ibig naming sabihin ay maaaring makaapekto sa gawi ng thread ang anumang tawag sa pamamaraan, sabihin nating, baguhin ang priyoridad nito, o magdulot ng pagkaantala.
(pinagmulan: Tyts )
Upang maiwasan ang isang thread na magsimulang huminto at matakpan ang lahat ng mga thread sa isang hilera, ang konsepto ng isang grupo ay ipinakilala. Ang isang thread ay maaari lamang makaimpluwensya sa mga thread na nasa parehong pangkat nito. Ang isang pangkat ng thread ay kinakatawan ng klase ng ThreadGroup. Binibigyang-daan ka ng organisasyong ito na protektahan ang mga daloy mula sa mga hindi gustong panlabas na impluwensya. Ang isang pangkat ng thread ay maaaring maglaman ng iba pang mga grupo, na nagbibigay-daan sa lahat ng mga thread at grupo na maisaayos sa isang hierarchical tree kung saan ang bawat bagay sa ThreadGroup, maliban sa ugat, ay may magulang.
(source: Tyts ) Matapos basahin ang iba't ibang mga artikulo, nagpasya akong magsulat ng isang maliit na code kung saan hindi ko maabala ang mga daloy ng isa pang grupo mula sa isang thread ng isang grupo. At may hindi natuloy: pinahihintulutan akong makagambala((( Ang aking code: Bakit posible na makagambala? Narito ang 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 прервана
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION