如何获取线程入口

如何获取线程入口,第1张

在一个线程出现异常行为时,比如说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构造方法中指定线程的名字、如何查看一个进程里面启动了哪些线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9762320.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存