Thread Local در حقیقت شبیه یک scope است (مانند request scope یا session scope) و می توان به آن thread scope گفت. اشیائی که از کلاس ThreadLocal ساخته می شوند مانند یک map عمل می کنند و قابلیت ذخیره سازی هر شئی را برای هر thread دارند، کلاس ThreadLocal را می توان شبیه یک map تصور کرد که کلید آن یک thread و مقادیر آن اشیاء می باشد.
معمولا از کلاس ThreadLocal یک متغیر استاتیک در یک کلاس تعریف می شود و با استفاده از متدهای set و get که کلاس ThreadLocal دارد یک نوع خاص (مانند ThreadData) درون آن set و get می شود:
public class ThreadLocalUtil {
private final static ThreadLocal<ThreadData> THREAD_DATA = new ThreadLocal<ThreadData>() {
@Override
protected ThreadData initialValue() {
return new ThreadData();
}
};
public static ThreadData getThreadData() {
return THREAD_DATA.get();
}
public static void setThreadData(ThreadData data) {
THREAD_DATA.set(data);
}
public static void destroy() {
THREAD_DATA.remove();
}
private static class ThreadData {
private String someDate;
public ThreadData() {
}
public void setSomeDate(String someDate) {
this.someDate = someDate;
}
public String getSomeDate() {
return someDate;
}
}
}