当前位置: 动力学知识库 > 问答 > 编程问答 >

java - Threadlocal variable coming out to be null

问题描述:

I am trying to print threadlocal variable in the run method via thread execution but it is apparently coming out to be null. Please find the code for info ---

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());

}

}

// Now the class for creating the thread and calling the run method

public class PrintNumber {

public static void main(String[] args) {

EvenAndOdd evenAndOdd =new EvenAndOdd();

EvenAndOdd.setThreadContext();

Thread printThread = new Thread(evenAndOdd);

printThread.start();

}

}

Problem statement --- execution of the thread is giving me null rather than 2 & 3

网友答案:

You are observing the behavior which is the whole point of the ThreadLocal: what you set in one thread is not visible from another. You must set the ThreadLocal values from within the thread where you use them.

分享给朋友:
您可能感兴趣的文章:
随机阅读: