Core
第 35 级
Екатеринбург

线程组

已在 Random-ZH 群组中发布
下午好,新年快乐!帮助我更多地了解多线程,即ThreadGroup。我用谷歌搜索、阅读并理解了主要本质:目的是安全性,通过团体的组织进行集成管理。
出于可管理性和安全性的原因,线程被分为线程组。一个线程组可以属于另一组,形成一个层次结构,主(系统)组位于顶层。属于一个组的线程可以同时受到控制 - 您有权立即中断该组中所有线程的工作或为它们设置单个最大执行优先级值。线程组还可用于定义安全域。组内的线程通常被赋予相互影响的可能性,这种情况也延伸到嵌套组的线程上。当我们说“影响”时,我们的意思是任何方法调用都可以影响线程的行为,例如更改其优先级或导致中断。
(来源:Tyts
为了防止单个线程连续启动停止和中断所有线程,引入了组的概念。线程只能影响与其属于同一组的线程。线程组由 ThreadGroup 类表示。该组织允许您保护流免受不必要的外部影响。线程组可以包含其他组,从而允许将所有线程和组组织成一棵分层树,其中每个 ThreadGroup 对象(根对象除外)都有一个父对象。
(来源:Tyts)阅读各种文章后,我决定编写一段小代码,在其中我无法从一个组的一个线程中断另一个组的流程。但有些事情没有成功:它允许我中断((( 我的代码: 为什么可以中断?这是输出: 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