JAVA线程组概述和使用

一、概述

Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。

默认情况下,所有的线程都属于主线程组。

 ThreadGroup getThreadGroup()
          返回该线程所属的线程组。
 String getName()
          返回此线程组的名称。

 我们也可以给线程设置分组

ThreadGroup(String name)
          构造一个新线程组。
ThreadGroup(ThreadGroup parent, String name)
          创建一个新线程组。
Thread(ThreadGroup group, Runnable target)
          分配新的 Thread 对象。
Thread(ThreadGroup group, Runnable target, String name)
          分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员。
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
          分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈大小
Thread(ThreadGroup group, String name)
          分配新的 Thread 对象。

二、使用

1.默认是主线程组

MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr, "张三");
Thread t2 = new Thread(mr, "李四");
//获取线程组
ThreadGroup tg1 = t1.getThreadGroup();
ThreadGroup tg2 = t2.getThreadGroup();
String name1 = tg1.getName();
String name2 = tg2.getName();
System.out.println(name1);
System.out.println(name2);
// 通过结果我们知道了:线程默认情况下属于main线程组
// 通过下面的测试,你应该能够看到,默任情况下,所有的线程都属于同一个组
System.out.println(Thread.currentThread().getThreadGroup().getName());

2.自己设定线程组

ThreadGroup tg = new ThreadGroup("这是一个新的组");

MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(tg, mr, "张三");
Thread t2 = new Thread(tg, mr, "李四");
		
System.out.println(t1.getThreadGroup().getName());
System.out.println(t2.getThreadGroup().getName());
		
//通过组名称设置后台线程,表示该组的线程都是后台线程
tg.setDaemon(true);

猜你喜欢

转载自blog.csdn.net/qq_40298054/article/details/88047395