
在一个线程出现异常行为时,比如说CPU占用率过高,抛出异常等,你一定想知道这个线程是由哪个模块创建的。因此无论在哪个 *** 作系统上,获取线程名称是诊断线程相关问题的重要一步。 从线程ID获取线程名称通常的方法是,先获取该线程的入口地址,
方法/步骤
首先写一个类继承Thread ,重写run方法,利用GetName();
public class SetnameDemo extends Thread {
@Override
public void run() {
//getName
// public final String getName()返回该线程的名称。
//
// 返回:
// 该线程的名称。
for (int i = 0; i < 100; i++){
Systemoutprintln(getName() + i);
}
}
}
写好测试类:
public class SetnameMain {
public static void main(String[] args) {
SetnameDemo sd = new SetnameDemo();
SetnameDemo sd1 = new SetnameDemo();
sdsetName("haha:");
sd1setName("heheh:");
sdstart();
sd1start();
//获取主线程的名字:
//因为currentThread返回的是Thread,而Thread有getName的方法!
Systemoutprintln("--------------"+ThreadcurrentThread()getName());
}
}
为什么主线程获取线程名字要用 ThreadcurrentThread()getName()呢?
这是因为,主线程没有继承Thread类,当然不能用里面的方法,但是,ThreadcurretnThread()是返回Thread这个对象的,所以这样就可以getName了!!
所以控制台运行的结果如下:
--------------main
hehehe:0
hahha:0
hehehe:1
hahha:1
hahha:2
hehehe:2
hehehe:3
hahha:3
hehehe:4
hahha:4
hehehe:5
hehehe:6
hehehe:7
hehehe:8
hehehe:9
hehehe:10
hahha:5
hehehe:11
hehehe:12
hehehe:13
hehehe:14
hehehe:15
hehehe:16
hahha:6
hehehe:17
hahha:7
hehehe:18
hahha:8
方法一:PS
在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。
1$ ps -T -p <pid>
Linux上如何查看某个进程的线程
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。
方法二: Top
top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
1$ top -H
Linux上如何查看某个进程的线程
3
要让top输出某个特定进程<pid>并检查该进程内运行的线程状况:
$ top -H -p <pid>
Linux上如何查看某个进程的线程
根据线程名称找到线程,在java中是可以实现的,实现步骤是:
1、首先获取Java VM中当前运行的所有线程
以下代码是用数组返回Java VM中当前运行的所有线程
public static Thread[] findAllThreads()
{
ThreadGroup group = ThreadcurrentThread()getThreadGroup();
ThreadGroup topGroup = group;
/ 遍历线程组树,获取根线程组 /
while ( group != null )
{
topGroup = group;
group = groupgetParent();
}
/ 激活的线程数加倍 /
int estimatedSize = topGroupactiveCount() 2;
Thread[] slackList = new Thread[estimatedSize];
/ 获取根线程组的所有线程 /
int actualSize = topGroupenumerate( slackList );
/ copy into a list that is the exact size /
Thread[] list = new Thread[actualSize];
Systemarraycopy( slackList, 0, list, 0, actualSize );
return (list);
}
2、遍历线程,比对名称,找到需要寻找的线程
以下代码可得到线程的名称
String name = threadgetName();以上就是关于如何获取线程入口全部的内容,包括:如何获取线程入口、怎样访问thread构造方法中指定线程的名字、如何查看一个进程里面启动了哪些线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)