您的位置:首页 > 编程语言 > Java开发

Java ThreadLocal 解析

2016-03-27 19:40 531 查看
package concurrent;
/*
* @author: wjf
* @version: 2016年3月27日 下午2:44:46
*/

public class TestThreadLocal {
/*
* threadLocal 会为线程创建一个共享变量的本地副本,这样的话,可以在线程内部任意使用,而又不影响其他线程,这样一来就不会产生线程安全问题,
* 也不会严重影响性能,但是有一点:使用 threadLocal 肯定需要耗费更大的内存
*/
/*
* threadLocal 重写 initialValue 方法,就可以不用调用 set() 方法,否则如果不调用 set 方法的话,initialValue
* 方法默认返回 null
*/
ThreadLocal<Long> locall=new ThreadLocal<Long>(){
protected Long initialValue(){
return Thread.currentThread().getId();
}
};
ThreadLocal<String> locals=new ThreadLocal<String>(){
protected String initialValue(){
return Thread.currentThread().getName();
}
};
public void set(){
locall.set(Thread.currentThread().getId());
locals.set(Thread.currentThread().getName());
}
public void get(){
System.out.println(locall.get());
System.out.println(locals.get());
}
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
final TestThreadLocal test=new TestThreadLocal();
//      test.set();
test.get();
Thread thread1=new Thread(){
public void run(){
test.set();
test.get();
}
};
thread1.start();
thread1.join();
test.get();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: