查看和修改线程名称

--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3893797.html  "谢谢--

java是一种允许并发控制的语言,在我们编写的程序的时候,总是伴随着多个线程的执行,

但是背后运行的是什么线程,我们是看不到的,那么又该如何才能知道有哪些线程在运行呢?

(请查看上一篇文章《获取JVM所有线程》"http://www.cnblogs.com/XHJT/p/3890280.html "这里就不多说了-_-)

另外正所谓"人如其名",很多时候我们查看到系统在运行的线程的名字可读性并不是很好,

所以我们可以根据此线程的功能来为线程换一个名称

在这里主要用到的方法有:

getName():获取当前线程的名称
setName();设置当前线程的名称
getID():返回当前线程的标识符
getThreadGroup:获得当前线程所在的线程组

注:新建的线程的ID是由系统自动分配的,不可指定,但是其名称可通过setName()设置;

代码实例:

package com.xhj.thread;

import java.util.Scanner;

/**
* 查看和修改线程名称
*
* @author XIEHEJUN
*
*/
public class ModifyThreadName implements Runnable {
@Override
public void run() {
}

/**
* 获取并打印出当前所有的线程
*
* @return
*/
public static Thread[] getThreads() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
Thread[] threads = new Thread[group.activeCount()];
group.enumerate(threads, false);
System.out.println("当前运行的线程有:");
System.out.println("线程ID" + "\t线程名称");
for (Thread thread : threads) {
System.out.println(thread.getId() + "\t" + thread.getName());
}
return threads;
}

/**
* 程序数据输入口
*
* @return
*/
public static String input() {
Scanner sc = new Scanner(System.in);
String str = sc.next();
return str;
}

/**
* 查看,修改,新建线程 在新建线程时,线程的ID是由系统自动分配的
*
* @param id
* @param threads
*/
public static void modifyName(int id, Thread[] threads) {
try {

int count = -1;
for (Thread thread : threads) {
if (thread.getId() == (long) id) {
System.out.println("请输入您修改好了的名称:");
thread.setName(input());
break;
} else {
count++;
}
}
if (count == threads.length - 1) {
System.out.println("没有这个线程,将为您新建一个线程,请输入线程的名称:");
Thread new_thread = new Thread(input());
new_thread.start();
}

} catch (Exception e) {
System.out.println(e.getMessage());
}

}

public static void main(String[] args) {
try {
Thread[] threads = getThreads();
System.out.println("请输入您要修改的线程的ID:");
int n = Integer.parseInt(input());
modifyName(n, threads);
getThreads();
} catch (Exception e) {
System.out.println("2" + e.getMessage());
}
}

}

转载于:https://www.cnblogs.com/XHJT/p/3893797.html

java笔记--查看和修改线程名称相关推荐

  1. Java笔记11-【异常、线程】

    主要内容 异常.线程 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指 ...

  2. 【Java笔记】多线程与线程同步

    文章目录 一. 多线程 1.并发与并行 2.进程与线程 3. 线程的创建 3.1 继承Thread类 3.2 实现Runnable接口 3.3实现callable接口 二. 线程安全 1.案例 2.线 ...

  3. Java笔记-concurrent集合及线程池

    reentrantLock + condition实现 Blocking queue. java.util.concurrent提供了线程安全的Blocking集合:ArrayBlockingQueu ...

  4. java笔记:熟练掌握线程技术---基础篇之解决资源共享的问题(中)--前篇

    上篇里我讲到了java里如何去创建一个线程的问题,上篇的代码里创建的线程都是独立的,也就是说创建的线程都不会相互的干扰,独立的进行属于自己的运算,更重要的是上篇博文里创建的线程所使用的资源都是独占式的 ...

  5. 【JAVA笔记——道】Hibernate 线程本地化基础篇

    在进行数据访问的时候每个用户对应一个线程,而用户的各种数据的处理都是通过线程来完成的. 根据Hibernate的功能分级,在Dao(Data Access Object)数据访问对象进行基本的对象处理 ...

  6. 获取线程名称 java 1615387415

    获取线程名称 java 1615387415 多个线程一起跑的时候 有三个线程的运行 结果 无法明确子线程是哪个子线程的操作结果 获取与修改线程名称 演示 在线程的方法中 结果 获取当前线程对象 先获 ...

  7. Java 线程实例一(查看线程是否存活、获取当前线程名称、状态监测、线程优先级设置、死锁及解决方法、获取线程id、线程挂起)

    查看线程是否存活 以下实例演示了如何通过继承 Thread 类并使用 isAlive() 方法来检测一个线程是否存活: public class TwoThreadAlive extends Thre ...

  8. 修改线程的名称 java 1615387415

    修改线程的名称 java 1615387415 setName方法 效果 利用带参构造法 实例化的时候 传入参数即可

  9. java同步锁售票_Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)...

    学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是 ...

最新文章

  1. (每日一题)P3723 [AH2017/HNOI2017]礼物(经典FFT)
  2. 虚拟交换机软件_H3C交换机IRF配置介绍
  3. pip install jieba安装慢,安装失败,安装不解决办法
  4. React Native之函数作为参数传递给另外一个函数去调用
  5. 台电x80plus装linux,纤巧却不简单——台电X80 Plus评测
  6. MiniDao支持ID自增主键策略,使用讲解
  7. Redis学习---(14)Redis 事务
  8. !!!后续博客写到简书 + 博客园留博客目录
  9. 蓝桥杯2020年第十一届C++省赛第六题-成绩统计
  10. mysql算大型数据库吗_mysql – 估计大型数据库的大小和速度
  11. 数据集:各地区化妆品销量、人口数量和人均收入
  12. 计算机网络(北京理工大学出版社)课后习题答案
  13. MIT-JOS系列5:用户环境(一)
  14. Windows内核面试题(持续更新,目前完成度30%约1.8万字)
  15. LeetCode周赛
  16. linux系统发生假死状态处理办法
  17. drools-自成一派
  18. 最近有朋友问我,如何在自媒体上快速发文章?
  19. 实现pdf文件打印预览
  20. 如何在互联网存量时代做电商?

热门文章

  1. volatile指令重排_volatile可见性和指令重排
  2. 符号常量和变量有什么区别_JVM是什么?
  3. 大数据时代,海量数据处理常用思路和方法总结
  4. 安装 卸载 mysql linux,Linux 下MySQL 安装与卸载
  5. 项目服务接口设计_Spring Boot Security 整合 OAuth2 设计安全API接口服务
  6. 汇编学习--7.13--转移指令
  7. win10如何用管理员权限去运行服务器,让Visualstudio在win10下使用管理员方式运行...
  8. linux查看php执行用户,在浏览器中打开php文件时,是Linux中的哪个用户执行的?...
  9. 如果伦敦地铁图是数据科学家画的……
  10. java多线程之volatile理解