`

获取当前线程状态 Thread.currentThread().getStackTrace()

    博客分类:
  • Java
 
阅读更多
http://www.cnblogs.com/mengdd/p/3285592.html
缘起
  今天看到有一个工具类中有一句:

String msgToPrint = Thread.currentThread().getStackTrace()[3]
                    .getMethodName();

  输出的结果很简单,就是调用时的方法名。





文档:
  其中使用的Thread类的第一个方法:

public static Thread currentThread()

  返回当前线程对象。



  第二个方法:(阅读Java SE的文档:)

public StackTraceElement[] getStackTrace()

  返回一个堆栈轨迹元素的数组,代表了这个线程的堆栈情况。

  如果:1.这个线程没有被开启;2.这个线程被开启了但是没有被系统运行过(因为线程运行是需要根据一定规律轮换的);3.这个线程结束了。

  这三种情况下getStackTrace()返回的数组长度为0。



  如果返回的数组长度不为0,那么数组的第一个元素代表栈顶元素,即是这个调用序列中最recent的方法。
    第二个元素就是调用方法的类.
  数组的最后一个元素代表栈底元素,即调用序列中最远的一个元素。
分享到:
评论

相关推荐

    Java中获取当前函数名、类名、当前类的文件名.doc

    - 解析: 在JDK 5及更高版本中,`Thread`类提供了`getStackTrace()`方法来获取当前线程的堆栈跟踪信息。通过索引访问可以获取到当前类的名称。 - 示例: ```java public class MyClass { public void myMethod() ...

    Java编程实现获取当前代码行行号的方法示例

    可以通过Thread.currentThread().getStackTrace()方法获取当前线程的栈跟踪信息,然后遍历栈跟踪元素数组,获取当前代码行行号,例如: ```java StackTraceElement[] steArray = Thread.currentThread()....

    线程跟踪者,可跟踪当前整个类调用关系图

    在Java中,线程的堆栈信息可以通过`Thread.currentThread().getStackTrace()`方法获取,返回的是一个`StackTraceElement`数组,表示了当前线程的调用堆栈。这个`ThreadStackTracker`类可能包含了一个或多个方法,...

    详解Java 打印堆栈的几种方法

    在这个方法中,我们创建了一个`Throwable`对象,然后通过`getStackTrace()`方法获取当前线程的堆栈跟踪元素数组。`StackTraceElement`对象包含了类名、文件名、行号和方法名等信息,我们逐个打印出来,以形成堆栈...

    Java/Android关于线程使用的总结

    - `getState()`:返回线程的当前状态。 - `getThreadGroup()`:返回线程所属的线程组。 - `getUncaughtExceptionHandler()`:返回线程的未捕获异常处理器。 #### 线程池与ThreadHandler 除了直接创建和管理线程外...

    java实用例子.pdf

    通过`Thread.currentThread().getStackTrace()`可以获取到当前线程的堆栈跟踪元素数组,通过索引可以获取到正在执行的方法名。例如: ```java String methodName = Thread.currentThread().getStackTrace()[1]....

    Java小片段

    - `Thread.currentThread().getStackTrace()`返回当前线程的堆栈跟踪元素数组,可以通过索引访问具体的方法名。例如: ```java String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();...

    20个开发人员非常有用的Java功能代码

    - 利用`Thread.currentThread().getStackTrace()`可以获取到当前线程的堆栈跟踪元素数组,通过索引可以获取到调用的方法名。例如: ```java String methodName = Thread.currentThread().getStackTrace()[1]....

    20个常用的Java程序块.doc

    可以通过`Thread.currentThread().getStackTrace()`获取当前线程的堆栈跟踪,然后从中提取方法名。 ```java String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); ``` ### 4. 字符串...

    android日志打印工具类

    1. **获取当前类名和方法名**:可以使用`Thread.currentThread().getStackTrace()`方法获取当前线程的堆栈跟踪元素数组,然后通过遍历这个数组,找到目标类名和方法名。 2. **设置日志级别**:可以根据项目需求或...

    Java 80道面试题和答案.docx

    - 在Java中,可以通过`Thread`类的静态方法`getAllStackTraces()`获取所有活动线程的堆栈跟踪,也可以使用`Thread.currentThread().getStackTrace()`获取当前线程的堆栈跟踪。 总之,`volatile`关键字在Java并发...

    java打印当前方法名示例分享

    `Thread.currentThread()`方法返回当前线程的引用,而`getStackTrace()`则返回这个线程的堆栈跟踪元素数组。每个元素代表一个堆栈帧,对应于一个方法调用。因此,`getStackTrace()[1]`通常会返回当前方法的堆栈帧,...

    20个超级有用的Java程序片段

    - 通过 `Thread.currentThread().getStackTrace()` 可以获取当前线程的堆栈跟踪元素,然后访问 `[1]` 位置的元素(通常代表调用该方法的方法)的 `getMethodName()` 来获取方法名。 4. **字符串转换为日期** - ...

    下面是20个非常有用的Java程序片段,希望能对你有用。

    - `Thread.currentThread().getStackTrace()` 返回当前线程的堆栈跟踪元素数组,每个元素代表一个方法调用。 - 访问堆栈跟踪元素的`getMethodName()` 可以获取方法名。通常,索引为1的元素表示当前正在执行的方法...

    20个开发人员非常有用的Java功能代码(整理版)

    在Java中,通过 `Thread.currentThread().getStackTrace()` 方法可以获取到当前线程的堆栈跟踪信息。如果想要知道当前执行的代码处于哪个方法中,可以通过以下方式获取方法名: ```java String methodName = Thread...

    20个开发人员有用的Java功能代码

    - `Thread.currentThread().getStackTrace()`获取当前线程的堆栈跟踪数组。 - 数组中的第一个元素通常是`getStackTrace`方法本身,因此我们访问索引为1的元素来获取当前调用方法的信息。 - `getMethodName()`返回...

    java功能代码

    利用`Thread.currentThread().getStackTrace()[1].getMethodName()`可以获取当前线程堆栈跟踪中第二个元素(即当前方法的父方法)的方法名。这在调试、日志记录或实现某些特定功能时非常有用。注意,由于`...

Global site tag (gtag.js) - Google Analytics