ThreadLocal¶
Этот класс предоставляет локальные для потока переменные.
Эти переменные отличаются от своих обычных аналогов тем, что каждый поток, который обращается к объекту ThreadLocal (через метод get или set), имеет свою собственную, независимо инициализированную копию переменной.
remove - Removes the current thread’s value for this thread-local variable.
Ссылки:
Пример
import java.util.concurrent.atomic.AtomicInteger;
public class ThreadId {
// Atomic integer containing the next thread ID to be assigned
private static final AtomicInteger nextId = new AtomicInteger(0);
// Thread local variable containing each thread's ID
private static final ThreadLocal<Integer> threadId =
new ThreadLocal<Integer>() {
@Override protected Integer initialValue() {
return nextId.getAndIncrement();
}
};
// Returns the current thread's unique ID, assigning it if necessary
public static int get() {
return threadId.get();
}
}
InheritableThreadLocal¶
Этот класс расширяет ThreadLocal для обеспечения наследования значений из родительского потока в дочерний поток: когда создается дочерний поток - он получает начальные значения для всех inheritable thread-local переменных, для которых родительский имеет значения.
Ссылки: