微言耸听

导航

Java ThreadLocal

原文: http://blog.163.com/lyq_163_2009/blog/static/13408269620115188345257/

ThreadLocal说明:
ThreadLocal是一个本地线程。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。所以是线程局部变量。
ThreadLocal为每一个线程维护变量的副本,在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。

public class ThreadContext {

public static final ThreadLocal<Object> threadLocal = new ThreadLocal<Object>();

/**
* @param value
*/
public static void set(Object value){
threadLocal.set(value);
}

/**
* @return
*/
public static Object get(){
return threadLocal.get();
}

public static void remove(){
threadLocal.remove();
}

}

ThreadLocal的接口方法:
public void set(Object value)
设置当前线程的线程局部变量的值。
public Object get()
该方法返回当前线程所对应的线程局部变量。
public void remove()
将当前线程局部变量的值删除,目的是为了减少内存的占用。当线程结束后,对应该线程的局部变量将自动被垃圾回收,所以显式调用该方法清除线程的局部变量并不是必须的操作,但它可以加快内存回收的速度。

Collections.synchronizedMap() :返回的一个线程安全且实现了Map接口的类的对象。

posted on 2013-01-15 15:35  微言耸听  阅读(196)  评论(0)    收藏  举报