java笔记--查看和修改线程名称
查看和修改线程名称
--如果朋友您想转载本文章请注明转载地址"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());
}
}
}
java笔记--查看和修改线程名称的更多相关文章
- java笔记--查看和修改线程的优先级
查看和修改线程的优先级 java中每一个线程都有优先级属性,在默认情况下,新建的线程的优先级与创建该线程的线程优先级相同.每当线程调度器选择要运行的线程时,通常选择优先级较高的线程. 注:线程的优先级 ...
- java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程 ThreadLocal在我的笔记"关于线程同步"的第5种方式里面有介绍,这里就不多说了. ...
- java笔记--使用事件分配线程更新Swing控件
使用事件分配线程更新Swing控件: Swing并不是线程安全的,如果在多个线程中更新Swing控件,则很可能造成程序崩溃. 为了避免这种问题,可以使用时间分配线程来更新Swing控件. EventQ ...
- JAVA下查看进程中线程占用CPU较高的代码
执行以下代码获得进程的线程.并找到CPU占用较高的线程ID ps -mp 16935 -o THREAD,tid,time 执行以下代码,通过线程ID获得16进制的线程标识 printf &quo ...
- Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)
多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...
- Java笔记(二十)……线程间通信
概述 当需要多线程配合完成一项任务时,往往需要用到线程间通信,以确保任务的稳步快速运行 相关语句 wait():挂起线程,释放锁,相当于自动放弃了执行权限 notify():唤醒wait等待队列里的第 ...
- java并发编程笔记(七)——线程池
java并发编程笔记(七)--线程池 new Thread弊端 每次new Thread新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或者OOM 缺 ...
- java并发编程笔记(五)——线程安全策略
java并发编程笔记(五)--线程安全策略 不可变得对象 不可变对象需要满足的条件 对象创建以后其状态就不能修改 对象所有的域都是final类型 对象是正确创建的(在对象创建期间,this引用没有逸出 ...
- java并发编程笔记(三)——线程安全性
java并发编程笔记(三)--线程安全性 线程安全性: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现 ...
随机推荐
- split 方法的正确使用姿势
本文同步自我的个人博客:http://www.52cik.com/2015/11/02/split-skill.html 通过js获取 QueryString (location.search部分) ...
- 编写兼容性JS代码
前文介绍了: 1 DOM四个常用的方法 2 使用DOM核心方法完成属性填充 本篇主要介绍在JS中需要注意的几个地方,另外为了减小html与javascript的耦合使用java进行onclick方法编 ...
- Foix_Reader_6.0|PDF阅读器
福晰PDF阅读器,是阅读器中的精品.此版本是优化版本. 00:风格前卫 01:使用简洁 下载地址: http://yunpan.cn/cHvyUfCdMKZz6 访问密码 ead7
- Future模式
Future模式简介 Future模式有点类似于网上购物,在你购买商品,订单生效之后,你可以去做自己的事情,等待商家通过快递给你送货上门.Future模式就是,当某一程序提交请求,期望得到一个答复.但 ...
- Centos下apache启动时httpd: apr_sockaddr_info_get() failed for 报错
今天安装Apache httpd web服务器时,从官方网站上http://www.apache.org/dyn/closer.cgi下载httpd,然后在centos下解压,安装过程分为三部分: ( ...
- Tomcat 使用说明
Tomcat下有7个目录,分别是bin,conf,lib,logs,temp,webapps,work 目录 Tomcat根目录在tomcat中叫<CATALINA_HOME> 1.< ...
- 【HDU 2604】Queuing
题 题意 f和m两种字母组成字符串,fmf 和 fff 这种为不安全的字符串,现在有2*L个字母,问你有多少安全的字符串.答案mod M. 分析 递推,这题本意是要用矩阵快速幂.不过我发现这题好神奇, ...
- 【转】从Go、Swift语言出发
Google于2009年第一次提出了Go的构思,Facebook在去年春天引入了Hack,随后不久Apple也发布了其Swift语言. 在战争中,胜利者写历史书:在科技中,赢的公司都在写编程语言.互联 ...
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 【bzoj1061】 Noi2008—志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 (题目链接) 题意 给定n天,第i天需要ai个志愿者,有m类志愿者,每类志愿者工作时间为[l, ...