java 获取线程对应的上下文

/ 0条评论 / 0 个点赞 / 75人阅读
package com.zxlhdata.framework.core.util;

import org.apache.catalina.loader.WebappClassLoader;

public class TomcatThreadDump {

	public static void main() throws Exception {
		Thread mainThread = Thread.currentThread();
		ThreadGroup mainThreadThreadGroup = mainThread.getThreadGroup();
		// 获取线程组中的线程。
		int count = mainThreadThreadGroup.activeCount();
		System.out.println("count:" + count);
		Thread[] threads = new Thread[count];
		// enumerate 枚举,recurse 递归
		mainThreadThreadGroup.enumerate(threads, true);
		for(Thread t:threads) {
			// 获取当前线程的上下文类加载器
			ClassLoader contextClassLoader = t.getContextClassLoader();
			if (contextClassLoader instanceof WebappClassLoader) {
				WebappClassLoader appContext = (WebappClassLoader) contextClassLoader;
				System.out.println("方法1:contextName:" + (appContext.getContextName()));
			}
			
			System.out.println("方法2:线程池的线程:" + (contextClassLoader));
		}
	}
}