package com.basic.security.utils;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
public class ThreadUtil {
|
static Map<Thread, StackTraceElement[]> prevThreadMap = new HashMap<>();
|
|
public static void printThreadInfo(String name) {
|
Thread currentThread = Thread.currentThread();
|
// System1.out.println("threadId="+currentThread.getId()+",threadName="+currentThread.getName()+",name="+name);
|
}
|
|
public static void threadCreateObserver() {
|
if (1 == 1) {
|
return;
|
}
|
Map<Thread, StackTraceElement[]> threadMap = Thread.getAllStackTraces();
|
for (Map.Entry<Thread, StackTraceElement[]> threadEntry : threadMap.entrySet()) {
|
List<String> frames = new ArrayList<>();
|
StackTraceElement[] stackTraceElements = threadEntry.getValue();
|
if (!prevThreadMap.containsKey(threadEntry.getKey())) {
|
boolean hasBasic = false;
|
for (StackTraceElement stackTraceElement : stackTraceElements) {
|
frames.add(stackTraceElement.toString());
|
String frame = stackTraceElement.toString();
|
if (frame.contains(".basic.")) {
|
hasBasic = true;
|
System1.out.println(threadEntry.getKey().getId() + " " + frame);
|
}
|
}
|
if (!hasBasic) {
|
for (StackTraceElement stackTraceElement : stackTraceElements) {
|
frames.add(stackTraceElement.toString());
|
String frame = stackTraceElement.toString();
|
System1.out.println(threadEntry.getKey().getId() + " " + frame);
|
}
|
}
|
}
|
}
|
prevThreadMap = threadMap;
|
}
|
}
|