//这个代替上面的num,即每个线程里都有一个独立的num的副本,输出结果都为5,就是定义一个num的成员属性,内部通过map指向不同的副本
private static final ThreadLocal<Integer> local = new ThreadLocal<Integer>(){
@Override
protected Integer initialValue() {
return 0;
}
};
public static void main(String[] args) {
Thread[] threads = new Thread[5];
for (int i =0 ; i < 5; i++) {
//λ(Lambda)表达式 Language Level 8
threads = new Thread( ()-> {
int num = local.get().intValue();
num+=5;
System.out.println(Thread.currentThread().getName() + ":" + num);
});
}