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 prevThreadMap = new HashMap<>(); public static void printThreadInfo(String name) { Thread currentThread = Thread.currentThread(); // System.out.println("threadId="+currentThread.getId()+",threadName="+currentThread.getName()+",name="+name); } public static void threadCreateObserver() { if (1 == 1) { return; } Map threadMap = Thread.getAllStackTraces(); for (Map.Entry threadEntry : threadMap.entrySet()) { List 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; System.out.println(threadEntry.getKey().getId() + " " + frame); } } if (!hasBasic) { for (StackTraceElement stackTraceElement : stackTraceElements) { frames.add(stackTraceElement.toString()); String frame = stackTraceElement.toString(); System.out.println(threadEntry.getKey().getId() + " " + frame); } } } } prevThreadMap = threadMap; } }