ThreadLocal

Java Concurrency in Practice 3.3.3

感觉ThreadLocal 就是一个 Map 而已, 它到底好在哪里呢?
先挖坑,有时间再来填。。

例子:

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class ThreadLocalTest implements Runnable {

//private ThreadLocal<Student> threadLocal = new ThreadLocal<Student>();
private Map<String,Student> map = new HashMap<String,Student>();

@Override
public void run() {
String currentThreadName =  Thread.currentThread().getName();
System.out.println("current Thread name is : " + currentThreadName);
Random random = new Random();
int age =  random.nextInt(100);
Student stu = getStudent();
stu.setAge(age);
System.out.println(currentThreadName + " gets "+stu.getAge());
}

private Student getStudent(){
String currentThreadName =  Thread.currentThread().getName();
//Student stu =  threadLocal.get();
Student stu =  map.get(currentThreadName);
if(stu == null){
stu = new Student();
//threadLocal.set(stu);
map.put(currentThreadName, stu);
}
return stu;
}

public static void main(String args[]){
ThreadLocalTest test =  new ThreadLocalTest();
Thread t1 = new Thread(test,"Thread A");
Thread t2 = new Thread(test,"Thread B");
t1.start();
t2.start();
}
}


public class Student{
private int age;

public void setAge(int age){
this.age = age;
}

public int getAge(){
return this.age;
}

}

你可能感兴趣的:(java,thread)