加入方法的调用链很冗长,不可能一级一级得通过调用传递参数的方式调用最底层的方法,那么,ThreadLocal 将是好的选择,它在调用开始放入,在调用最底层取出。很方便
package com.yhm.testSpringMvc.Thread;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadLocalDemo {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(3);
for( int i=0;i<20;i++ ) {
executorService.execute(new yhmThreadPoolSimpleDemo1());
}
executorService.shutdown();
System.out.println("主线程执行完毕");
}
private static ThreadLocal<String> threadLocal = new ThreadLocal<>();
static class yhmThreadPoolSimpleDemo1 implements Runnable {
@Override
public void run() {
try {
int random = new Random().nextInt();
System.out.println(Thread.currentThread().getName() + " 放入随机整数" + random + "");
threadLocal.set(random + "");
Thread.sleep(new Random().nextInt(999));
System.out.println(Thread.currentThread().getName() + " 取出随机整数" + threadLocal.get() + "");
//做其他事情
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
执行结果:
D:\JAVA\jdk8_64\bin\java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64612,suspend=y,server=n -Dfile.encoding=UTF-8 -classpath "D:\JAVA\jdk8_64\jre\lib\charsets.jar;D:\JAVA\jdk8_64\jre\lib\deploy.jar;D:\JAVA\jdk8_64\jre\lib\ext\access-bridge-64.jar;D:\JAVA\jdk8_64\jre\lib\ext\cldrdata.jar;D:\JAVA\jdk8_64\jre\lib\ext\dnsns.jar;D:\JAVA\jdk8_64\jre\lib\ext\jaccess.jar;D:\JAVA\jdk8_64\jre\lib\ext\jfxrt.jar;D:\JAVA\jdk8_64\jre\lib\ext\localedata.jar;D:\JAVA\jdk8_64\jre\lib\ext\nashorn.jar;D:\JAVA\jdk8_64\jre\lib\ext\sunec.jar;D:\JAVA\jdk8_64\jre\lib\ext\sunjce_provider.jar;D:\JAVA\jdk8_64\jre\lib\ext\sunmscapi.jar;D:\JAVA\jdk8_64\jre\lib\ext\sunpkcs11.jar;D:\JAVA\jdk8_64\jre\lib\ext\zipfs.jar;D:\JAVA\jdk8_64\jre\lib\javaws.jar;D:\JAVA\jdk8_64\jre\lib\jce.jar;D:\JAVA\jdk8_64\jre\lib\jfr.jar;D:\JAVA\jdk8_64\jre\lib\jfxswt.jar;D:\JAVA\jdk8_64\jre\lib\jsse.jar;D:\JAVA\jdk8_64\jre\lib\management-agent.jar;D:\JAVA\jdk8_64\jre\lib\plugin.jar;D:\JAVA\jdk8_64\jre\lib\resources.jar;D:\JAVA\jdk8_64\jre\lib\rt.jar;D:\ideaPros\codeGitee\ACM\target\classes;D:\repo\junit\junit\4.12\junit-4.12.jar;D:\repo\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\repo\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar;D:\repo\org\springframework\spring-core\4.2.5.RELEASE\spring-core-4.2.5.RELEASE.jar;D:\repo\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\repo\org\springframework\spring-beans\4.2.5.RELEASE\spring-beans-4.2.5.RELEASE.jar;D:\repo\org\springframework\spring-context\4.2.5.RELEASE\spring-context-4.2.5.RELEASE.jar;D:\repo\org\springframework\spring-aop\4.2.5.RELEASE\spring-aop-4.2.5.RELEASE.jar;D:\repo\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\repo\org\springframework\spring-expression\4.2.5.RELEASE\spring-expression-4.2.5.RELEASE.jar;D:\repo\org\springframework\spring-tx\4.2.5.RELEASE\spring-tx-4.2.5.RELEASE.jar;D:\repo\org\springframework\spring-web\4.2.5.RELEASE\spring-web-4.2.5.RELEASE.jar;D:\repo\org\springframework\spring-webmvc\4.2.5.RELEASE\spring-webmvc-4.2.5.RELEASE.jar;D:\repo\org\springframework\spring-test\4.2.5.RELEASE\spring-test-4.2.5.RELEASE.jar;D:\repo\org\slf4j\slf4j-log4j12\1.6.6\slf4j-log4j12-1.6.6.jar;D:\repo\org\slf4j\slf4j-api\1.6.6\slf4j-api-1.6.6.jar;D:\repo\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\repo\cglib\cglib-nodep\3.2.2\cglib-nodep-3.2.2.jar;D:\repo\org\aspectj\aspectjweaver\1.7.4\aspectjweaver-1.7.4.jar;D:\repo\com\alibaba\dubbo\2.5.3\dubbo-2.5.3.jar;D:\repo\org\springframework\spring\2.5.6.SEC03\spring-2.5.6.SEC03.jar;D:\repo\org\javassist\javassist\3.15.0-GA\javassist-3.15.0-GA.jar;D:\repo\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\chengxu\intelliJIDEA\IntelliJ IDEA 2017.3.5\lib\idea_rt.jar" com.yhm.testSpringMvc.Thread.ThreadLocalDemo Connected to the target VM, address: '127.0.0.1:64612', transport: 'socket' 主线程执行完毕 pool-1-thread-1 放入随机整数1986180505 pool-1-thread-3 放入随机整数1241504119 pool-1-thread-2 放入随机整数-1030435475 pool-1-thread-2 取出随机整数-1030435475 pool-1-thread-2 放入随机整数-200882799 pool-1-thread-2 取出随机整数-200882799 pool-1-thread-2 放入随机整数330343826 pool-1-thread-2 取出随机整数330343826 pool-1-thread-2 放入随机整数-900908112 pool-1-thread-3 取出随机整数1241504119 pool-1-thread-3 放入随机整数2053191765 pool-1-thread-2 取出随机整数-900908112 pool-1-thread-2 放入随机整数2014947649 pool-1-thread-1 取出随机整数1986180505 pool-1-thread-1 放入随机整数388010160 pool-1-thread-1 取出随机整数388010160 pool-1-thread-1 放入随机整数602303787 pool-1-thread-3 取出随机整数2053191765 pool-1-thread-3 放入随机整数-350603564 pool-1-thread-1 取出随机整数602303787 pool-1-thread-1 放入随机整数-708829057 pool-1-thread-2 取出随机整数2014947649 pool-1-thread-2 放入随机整数-330459286 pool-1-thread-3 取出随机整数-350603564 pool-1-thread-3 放入随机整数-2049640285 pool-1-thread-1 取出随机整数-708829057 pool-1-thread-1 放入随机整数-1881084943 pool-1-thread-2 取出随机整数-330459286 pool-1-thread-2 放入随机整数-1918183919 pool-1-thread-3 取出随机整数-2049640285 pool-1-thread-3 放入随机整数-162248630 pool-1-thread-1 取出随机整数-1881084943 pool-1-thread-1 放入随机整数-1368000720 pool-1-thread-2 取出随机整数-1918183919 pool-1-thread-2 放入随机整数-692965666 pool-1-thread-1 取出随机整数-1368000720 pool-1-thread-1 放入随机整数-985462989 pool-1-thread-1 取出随机整数-985462989 pool-1-thread-3 取出随机整数-162248630 Disconnected from the target VM, address: '127.0.0.1:64612', transport: 'socket' pool-1-thread-2 取出随机整数-692965666 Process finished with exit code 0
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于