InheritableThreadLocal
システムスレッドとユーザースレッドでThreadLocalを共有したい場合にはInheritableThreadLocalを使用する
ThreadLocalの場合
public class Sample {
public static void main(String[] args) throws Exception {
final ThreadLocal tl = new ThreadLocal();
tl.set(new String("hoge"));
Thread t = new Thread() {
public void run() {
//共有されないのでnullが表示される
System.out.println((String)tl.get());
}
};
t.start();
}
}
ThreadLocalだと共有されないのでThreadLocal#getはnullが返る
InheritableThreadLocalの場合
public class Sample {
public static void main(String[] args) throws Exception {
final InheritableThreadLocal tl = new InheritableThreadLocal();
tl.set(new String("hoge"));
Thread t = new Thread() {
public void run() {
//hogeが表示される
System.out.println((String)tl.get());
}
};
t.start();
}
}