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中使用连等赋值操作
前言 文章标题这句话原本是在国外某JavaScript规范里看到的,当时并没有引起足够的重视,直到最近一次出现了bug发现JS里的连等赋值操作的特色(坑). 网上搜索一番发现一个非常好的连等赋值的(来 ...
- Siege——多线程编程最佳实例
在英语中,“Siege”意为围攻.包围.同时Siege也是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,并且具有较强的可移植性.之所以说它是多线程编程的最佳实例,主要原因是 ...
- python3 入门 (一) 基础语法
1.编码问题 默认情况下,Python 3源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 也可以为源码文件指定不同的编码,在文件头部加上: # coding=gbk 2.关键字 ...
- WebGame开发总结
不知不觉我们的项目开发有2年了,这两年来走了很多弯路,也收获了很多,今天在这里做一个总结. 项目基本情况: 服务器端采用c++和c#混合开发,网络层采用c++开发,业务逻辑用c#开发.客户端采用sil ...
- AJAX(一)AJAX的简介和基础
本节简介(异步链接服务器对象)XMLHTTPRequest以及AJAX的简介. AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML). AJ ...
- 每天一个linux命令(48):netstat命令
netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...
- [转]不再以讹传讹,GET和POST的真正区别
原文地址:http://www.nowamagic.net/librarys/veda/detail/1919 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个 ...
- JavaWeb项目前端规范(采用命名空间使js深度解耦合)
没有规矩不成方圆,一个优秀的代码架构不仅易于开发和维护,而且是一门管理与执行的艺术. 这几年来经历了很多项目,对代码之间的强耦合及书写不规范,维护性差等问题深恶痛绝.在这里,通过仔细分析后,结合自己的 ...
- Struts tag -s
1,if/elseif/else标签 <s:set value="19"/> <s:if test="%{#age > 60}"> ...
- bzoj 1791 DP
首先对于一棵树我们可以tree_dp来解决这个问题,那么对于环上每个点为根的树我们可以求出这个树的一端为根的最长链,并且在tree_dp的过程中更新答案.那么我们对于环,从某个点断开,破环为链,然后再 ...