《Java多线程编程核心技术(第2版)》 —1.7 StackTraceElement[] getStackTrace()方

举报
华章计算机 发表于 2020/02/08 14:05:43 2020/02/08
【摘要】 本节书摘来自华章计算机《Java多线程编程核心技术(第2版)》 一书中第1章,第1.7节,作者是高洪岩。

1.7 StackTraceElement[] getStackTrace()方法

StackTraceElement[] getStackTrace()方法的作用是返回一个表示该线程堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该数组中最新的方法调用。最后一个元素代表堆栈底,是该数组中最旧的方法调用。

创建测试用的代码如下:

package test1;

public class Test1 {

 

    public void a() {

        b();

    }

 

    public void b() {

        c();

    }

 

    public void c() {

        d();

    }

 

    public void d() {

        e();

    }

 

    public void e() {

        StackTraceElement[] array = Thread.currentThread().getStackTrace();

        if (array != null) {

            for (int i = 0; i < array.length; i++) {

                StackTraceElement eachElement = array[i];

                System.out.println("className=" + eachElement.getClassName() + " methodName=" + eachElement.getMethodName() + " fileName=" + eachElement.getFileName() + " lineNumber="+ eachElement.getLineNumber());

            }

        }

 

    }

 

    public static void main(String[] args) {

        Test1 test1 = new Test1();

        test1.a();

    }

}

程序运行结果如下:

className=java.lang.Thread methodName=getStackTrace fileName=Thread.java lineNumber=1559

className=test1.Test1 methodName=e fileName=Test1.java lineNumber=22

className=test1.Test1 methodName=d fileName=Test1.java lineNumber=18

className=test1.Test1 methodName=c fileName=Test1.java lineNumber=14

className=test1.Test1 methodName=b fileName=Test1.java lineNumber=10

className=test1.Test1 methodName=a fileName=Test1.java lineNumber=6

className=test1.Test1 methodName=main fileName=Test1.java lineNumber=36

在控制台中输出了当前线程的堆栈跟踪信息。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。