Java Threadlocal变量显示为null
我试图通过线程执行在run方法中打印threadlocal变量,但它显然是空的。请查找信息代码---Java Threadlocal变量显示为null,java,multithreading,thread-local,Java,Multithreading,Thread Local,我试图通过线程执行在run方法中打印threadlocal变量,但它显然是空的。请查找信息代码--- 问题陈述---线程的执行给我的是空值,而不是2&3。您正在观察的行为是ThreadLocal的全部要点:您在一个线程中设置的内容从另一个线程中是不可见的。您必须在使用线程的线程内设置ThreadLocal值。您正在观察的行为是ThreadLocal的全部要点:您在一个线程中设置的内容从另一个线程看不到。必须在使用它们的线程内设置ThreadLocal值 public class EvenAndO
问题陈述---线程的执行给我的是空值,而不是2&3。您正在观察的行为是
ThreadLocal
的全部要点:您在一个线程中设置的内容从另一个线程中是不可见的。您必须在使用线程的线程内设置ThreadLocal
值。您正在观察的行为是ThreadLocal
的全部要点:您在一个线程中设置的内容从另一个线程看不到。必须在使用它们的线程内设置ThreadLocal
值
public class EvenAndOdd implements Runnable{
public EvenAndOdd() {
}
public static void setThreadContext(){
threadLocal.set(3);
eventhreadLocal.set(2);
}
private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>();
private static ThreadLocal<Integer> eventhreadLocal = new ThreadLocal<Integer>();
@Override
public void run() {
System.out.println(threadLocal.get());
System.out.println(eventhreadLocal.get());
}
}
public class PrintNumber {
public static void main(String[] args) {
EvenAndOdd evenAndOdd =new EvenAndOdd();
EvenAndOdd.setThreadContext();
Thread printThread = new Thread(evenAndOdd);
printThread.start();
}
}