Невозможно установить значение для поля InheritableThreadLocal в потоке, унаследованном классом.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно установить значение для поля InheritableThreadLocal в потоке, унаследованном классом.

Сообщение Anonymous »

Каким-то образом, когда я пытаюсь установить значение для поля InheritableThreadLocal при создании объекта класса, который наследует Thread, я получаю странное поведение: мой объект не имеет значения, которое я установил при вызове конструктора, когда выполнение достигает строки печати в run () метод. В то же время, когда я пытаюсь запустить поток, наследующий мой класс, он видит значение, которое я установил при создании предыдущего кода.
Я пытался запустить следующий код:

Код: Выделить всё

public class InheritableThreadLocalExample {

public static void main(String[] args) {
ThreadOne threadOne = new ThreadOne("user-one", "thread-one");
threadOne.start();
ThreadTwo threadTwo = new ThreadTwo("user-two", "thread-two");
threadTwo.start();
}

public static class ThreadOne extends Thread {

protected static final InheritableThreadLocal USERNAME = new InheritableThreadLocal();

public ThreadOne(String username, String threadName) {
super(threadName);
USERNAME.set(username);
}

@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ". Username: " + USERNAME.get());
}
}

public static class ThreadTwo extends ThreadOne {
public ThreadTwo(String username, String threadName) {
super(username, threadName);
}
}

}
Вывод:

Код: Выделить всё

thread-two. Username: user-one
thread-one. Username: null
Почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ted-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»