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并发编程笔记(三)--线程安全性 线程安全性: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现 ...
随机推荐
- JS开发HTML5游戏《神奇的六边形》(三)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- CocoaPods Podfile 文件写法有讲究
最近做到一些项目想到用 OC/Swift混编的问题.为了搞懂 bridge header 这个文件是咋个情况.却一致报错.最后不知不觉发现问题问题居然出在 Podfile 上. 开始我是从 IT 江湖 ...
- git点滴的积累
git的基本学习的网址: http://www.yiibai.com/git/git_update_operation.html 0.git首次上传代码 http://www.cnblogs.com/ ...
- 机器学习中的矩阵方法03:QR 分解
1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其 ...
- [设计模式]第四回:建造者模式(Builder Pattern)
1.概述 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示,这就是建造者模式. 简单的说就是生产一个产品的步骤比较稳定,单个步骤变化会产生一个不同的产品. 2.实践 物理模型 建造 ...
- 使用Web Deploy进行远程部署
Web Deploy支持直接从本地Visual Studio的工程文件部署网站到远程服务器,部署的过程中可以对比哪些文件变化了需要拷贝,而不是一股脑的全部拷贝,效率和准确性会更好. 部署的过程主要要注 ...
- 【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题
达神题解传送门:http://blog.csdn.net/dad3zz/article/details/50638360 说一下我对这个模板的理解: 看到这个方法很容易不知所措,因为动态K值需要套树状 ...
- 读JS高级API笔记_(DOM&&DOM2&&DOM3)哎呀——园龄才9个月啊
---恢复内容开始--- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- Statement,PreparedStatement和CallableStatement的联系和区别
联系: CallableStatement继承自PreparedSatement,PreparedStatement继承自Statement. 区别: 1:Statement 每次执行sql语句,数据 ...
- 【前端】less学习
Less 是什么? Less is more,than CSS. Less就是搞笑高效编写和维护CSS的一种语法. 1.下载Koala考拉,一款国人编写的less开发器. 2.可以用Sublime T ...