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的方法。
第二个元素就是调用方法的类.
数组的最后一个元素代表栈底元素,即调用序列中最远的一个元素。
分享到:
相关推荐
- 解析: 在JDK 5及更高版本中,`Thread`类提供了`getStackTrace()`方法来获取当前线程的堆栈跟踪信息。通过索引访问可以获取到当前类的名称。 - 示例: ```java public class MyClass { public void myMethod() ...
可以通过Thread.currentThread().getStackTrace()方法获取当前线程的栈跟踪信息,然后遍历栈跟踪元素数组,获取当前代码行行号,例如: ```java StackTraceElement[] steArray = Thread.currentThread()....
在Java中,线程的堆栈信息可以通过`Thread.currentThread().getStackTrace()`方法获取,返回的是一个`StackTraceElement`数组,表示了当前线程的调用堆栈。这个`ThreadStackTracker`类可能包含了一个或多个方法,...
在这个方法中,我们创建了一个`Throwable`对象,然后通过`getStackTrace()`方法获取当前线程的堆栈跟踪元素数组。`StackTraceElement`对象包含了类名、文件名、行号和方法名等信息,我们逐个打印出来,以形成堆栈...
- `getState()`:返回线程的当前状态。 - `getThreadGroup()`:返回线程所属的线程组。 - `getUncaughtExceptionHandler()`:返回线程的未捕获异常处理器。 #### 线程池与ThreadHandler 除了直接创建和管理线程外...
通过`Thread.currentThread().getStackTrace()`可以获取到当前线程的堆栈跟踪元素数组,通过索引可以获取到正在执行的方法名。例如: ```java String methodName = Thread.currentThread().getStackTrace()[1]....
- `Thread.currentThread().getStackTrace()`返回当前线程的堆栈跟踪元素数组,可以通过索引访问具体的方法名。例如: ```java String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();...
- 利用`Thread.currentThread().getStackTrace()`可以获取到当前线程的堆栈跟踪元素数组,通过索引可以获取到调用的方法名。例如: ```java String methodName = Thread.currentThread().getStackTrace()[1]....
可以通过`Thread.currentThread().getStackTrace()`获取当前线程的堆栈跟踪,然后从中提取方法名。 ```java String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); ``` ### 4. 字符串...
1. **获取当前类名和方法名**:可以使用`Thread.currentThread().getStackTrace()`方法获取当前线程的堆栈跟踪元素数组,然后通过遍历这个数组,找到目标类名和方法名。 2. **设置日志级别**:可以根据项目需求或...
- 在Java中,可以通过`Thread`类的静态方法`getAllStackTraces()`获取所有活动线程的堆栈跟踪,也可以使用`Thread.currentThread().getStackTrace()`获取当前线程的堆栈跟踪。 总之,`volatile`关键字在Java并发...
`Thread.currentThread()`方法返回当前线程的引用,而`getStackTrace()`则返回这个线程的堆栈跟踪元素数组。每个元素代表一个堆栈帧,对应于一个方法调用。因此,`getStackTrace()[1]`通常会返回当前方法的堆栈帧,...
- 通过 `Thread.currentThread().getStackTrace()` 可以获取当前线程的堆栈跟踪元素,然后访问 `[1]` 位置的元素(通常代表调用该方法的方法)的 `getMethodName()` 来获取方法名。 4. **字符串转换为日期** - ...
- `Thread.currentThread().getStackTrace()` 返回当前线程的堆栈跟踪元素数组,每个元素代表一个方法调用。 - 访问堆栈跟踪元素的`getMethodName()` 可以获取方法名。通常,索引为1的元素表示当前正在执行的方法...
在Java中,通过 `Thread.currentThread().getStackTrace()` 方法可以获取到当前线程的堆栈跟踪信息。如果想要知道当前执行的代码处于哪个方法中,可以通过以下方式获取方法名: ```java String methodName = Thread...
- `Thread.currentThread().getStackTrace()`获取当前线程的堆栈跟踪数组。 - 数组中的第一个元素通常是`getStackTrace`方法本身,因此我们访问索引为1的元素来获取当前调用方法的信息。 - `getMethodName()`返回...
利用`Thread.currentThread().getStackTrace()[1].getMethodName()`可以获取当前线程堆栈跟踪中第二个元素(即当前方法的父方法)的方法名。这在调试、日志记录或实现某些特定功能时非常有用。注意,由于`...