是的,您可以:我提供两种方式:一种标准方式和一种半破解方式。
大多数答案都应该是Java内置的功能。
安装安全管理器并覆盖
SecurityManager.getThreadGroup(),您可以轻松获取堆栈跟踪,或者可以通过覆盖其余方法来禁用其余的安全检查。
顽皮的一:在主线程中安装一个InheritableThreadLocal(一个名为main并由main(String []
args)方法运行)。覆盖受保护的对象
InheritableThreadLocal.childValue(T parentValue),您就完成了。
注意:您将获得正在创建的线程和父线程(引用)的堆栈跟踪,但这足以跟踪问题。
我决定写一个超级简单的示例来说明它是多么容易:在这里您可以看到结果。看一下样本,我想这是我在此网站上发布过的最优雅的解决方案,主要是b /
c,它不是显而易见的,但简单而智能。
package bestsss.util;import java.util.Arrays;public class StackInterceptor extends InheritableThreadLocal<StackTraceElement[]>{ public static final StackInterceptor instance; static{ instance = new StackInterceptor(); instance.set(new Throwable().getStackTrace()); } @Override protected StackTraceElement[] childValue(StackTraceElement[] parentValue) { return new Throwable().getStackTrace(); } //test// public static void main(String[] args) { Runnable r= new Runnable(){ @Override public void run() { System.out.printf("%s - creation stack: %s%n", Thread.currentThread(), Arrays.toString(instance.get()).replace(',', 'n')); } }; Thread t1 = new Thread(r, "t1"); //spacer Thread t2 = new Thread(r, "t2"); t1.start(); t2.start(); }}线程[t1,5,main]-创建堆栈:[bestssss.util.StackInterceptor.childValue(StackInterceptor.java:13) bestsss.util.StackInterceptor.childValue(StackInterceptor.java:1) java.lang.ThreadLocal $ ThreadLocalMap。(ThreadLocal.java:334) java.lang.ThreadLocal $ ThreadLocalMap。(ThreadLocal.java:242) java.lang.ThreadLocal.createInheritedMap(ThreadLocal.java:217) java.lang.Thread.init(Thread.java:362) java.lang.Thread。(Thread.java:488) **bestsss.util.StackInterceptor.main(StackInterceptor.java:25)]**线程[t2,5,main]-创建堆栈:[bestssss.util.StackInterceptor.childValue(StackInterceptor.java:13) bestsss.util.StackInterceptor.childValue(StackInterceptor.java:1) java.lang.ThreadLocal $ ThreadLocalMap。(ThreadLocal.java:334) java.lang.ThreadLocal $ ThreadLocalMap。(ThreadLocal.java:242) java.lang.ThreadLocal.createInheritedMap(ThreadLocal.java:217) java.lang.Thread.init(Thread.java:362) java.lang.Thread。(Thread.java:488) **bestsss.util.StackInterceptor.main(StackInterceptor.java:27)]**祝您好运,黑客入侵愉快。



