Java线程组操作实例分析

所属分类: 软件编程 / java 阅读数: 114
收藏 0 赞 0 分享

本文实例讲述了Java线程组操作。分享给大家供大家参考,具体如下:

一 点睛

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

2 一旦某个线程加入了指定线程组之后,该线程将一直属于该线程组,直到该线程死亡,线程运行中途不能改变它所属的线程组。

3 Thread类提供了如下几个构造器来设置新创建的线程属于哪个线程组:

Thread(ThreadGroup group, Runnable target):以target的run方法作为线程执行体创建新线程,属于group线程组。

Thread(ThreadGroup group, Runnable target, String name):以target的run方法作为线程执行体创建新线程,该线程属于group线程组,且线程名为name。

Thread(ThreadGroup group, String name):创建新线程,新线程名为name,属于group线程组。

4 Thread类没有提供setThreadGroup的方法来改变线程所属的线程组,但提供了一个getThreadGroup()方法来返回该线程所属的线程组,getThreadGroup()方法的返回值是ThreadGroup对象,表示一个线程组。

5 ThreadGroup类有如下两个简单的构造器来创建实例。

ThreadGroup(String name):以指定线程组名字来创建新的线程组。

ThreadGroup(ThreadGroup parent, String name):以指定的名字、指定的父线程组创建一个新线程组。

二 实战

1 代码

class MyThread extends Thread
{
   // 提供指定线程名的构造器
   public MyThread(String name)
   {
      super(name);
   }
   // 提供指定线程名、线程组的构造器
   public MyThread(ThreadGroup group , String name)
   {
      super(group, name);
   }
   public void run()
   {
      for (int i = 0; i < 3 ; i++ )
      {
        System.out.println(getName() + " 线程的i变量" + i);
      }
   }
}
public class ThreadGroupTest
{
   public static void main(String[] args)
   {
      // 获取主线程所在的线程组,这是所有线程默认的线程组
      ThreadGroup mainGroup = Thread.currentThread().getThreadGroup();
      System.out.println("主线程组的名字:"
        + mainGroup.getName());
      System.out.println("主线程组是否是后台线程组:"
        + mainGroup.isDaemon());
      new MyThread("主线程组的线程").start();
      ThreadGroup tg = new ThreadGroup("新线程组");
      tg.setDaemon(true);
      System.out.println("tg线程组是否是后台线程组:"
        + tg.isDaemon());
      MyThread tt = new MyThread(tg , "tg组的线程甲");
      tt.start();
      new MyThread(tg , "tg组的线程乙").start();
   }
}

2 运行

主线程组的名字:main
主线程组是否是后台线程组:false
tg线程组是否是后台线程组:true
主线程组的线程 线程的i变量0
tg组的线程甲 线程的i变量0
tg组的线程甲 线程的i变量1
主线程组的线程 线程的i变量1
tg组的线程乙 线程的i变量0
tg组的线程乙 线程的i变量1
tg组的线程乙 线程的i变量2
主线程组的线程 线程的i变量2
tg组的线程甲 线程的i变量2

3 说明

首先获取主线程所属的线程组,并访问该线程组的相关属性,接着创建一个新线程组,并将该线程组设置为后台线程组。

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多