package com.ecms;
/**
* ThreadLocal用法
*
* @author coshaho
*/
public class MyThreadLocal {
private static final ThreadLocal<Object> threadLocal = new ThreadLocal<Object>() {
/**
* ThreadLocal没有被当前线程赋值时或当前线程刚调用remove方法后调用get方法,返回此方法值
*/
@Override
protected Object initialValue() {
System.out.println("调用get方法时,当前线程共享变量没有设置,调用initialValue获取默认值!");
return null;
}
};
public static void main(String[] args) {
for(int i = 0;i < 5;i++){
new Thread(new MyIntegerTask(i+"号线程")).start();
}
}
public static class MyIntegerTask implements Runnable {
private String name;
//构造函数
MyIntegerTask(String name) {
this.name = name;
}
@Override
public void run() {
MyThreadLocal.threadLocal.set(name);
System.out.println("当前线程的名字:"+Thread.currentThread().getName()+" ThreadLocal中存放的变量名:"+MyThreadLocal.threadLocal.get());
}
}
}