包java.lang.Thread.setContextClassLoader(ClassLoader loader)中提供了此方法。
此方法用于为此(当前)线程设置上下文ClassLoader。
可以在创建线程时设置上下文ClassLoader,通过该上下文,线程创建者可以访问线程并提供适当的类加载器,以在类加载时在程序中运行代码。
该方法不是静态的,因此该方法可通过Thread类对象访问,而无法通过类名称访问。
此方法的返回类型为void,因此它不返回任何内容。
如果此线程无法设置上下文ClassLoader,则此方法引发异常(SecurityException)。
语法:
void setContextClassLoader(ClassLoader loader){ }
参数:
我们仅在Thread方法中传递一个对象作为参数,并且该参数是此线程的上下文ClassLoader。
返回值:
此方法的返回类型为void,它不返回任何内容。
setContextClassLoader()
方法示例/* We will use Thread class methods so we are importing the package but it is not mandate because it is imported by default */ import java.lang.Thread; class SetContextClassLoader extends Thread { // Override run() of Thread class public void run() { //显示最终用户的消息 System.out.println("The name of this thread is " + " " + Thread.currentThread().getName()); } public static void main(String[] args) { //创建一个SetContextClassLoader类的对象 SetContextClassLoader ccl = new SetContextClassLoader(); //创建Thread类的对象 Thread th = new Thread(ccl); //Thread类start()方法将调用 th.start(); // getContextClassLoader() will return context ClassLoader //并创建ClassLoader的引用 ClassLoader cl = th.getContextClassLoader(); //通过使用setContextClassLoader(ClassLoader cl)设置 //此线程的上下文ClassLoader- th.setContextClassLoader(cl); System.out.println("The Context ClassLoader for this thread th is = " + cl); System.out.println("The Parent of the ClassLoader is = " + cl.getParent()); System.out.println("The Class of the ClassLoader is = " + cl.getClass()); } }
输出结果
E:\Programs>javac SetContextClassLoader.java E:\Programs>java SetContextClassLoader The Context ClassLoader for this thread th is = [email protected] The name of this thread is Thread-1 The Parent of the ClassLoader is = [email protected] The Class of the ClassLoader is = class sun.misc.Launcher$AppClassLoader