synchronized同步机制通过对象的锁机制保证同一时间只有一个线程访问多个线程共享的变量,要求程序慎密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题。而ThreadLocal则用另一种思路解决多线程的并发访问,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。
public class ThreadLocalStu{
static ThreadLocal<Student> tl = new ThreadLocal<>();
public static void main(){
new Thread(()->{
try{
TimeUnit.SECONDS.sleep(timeout:2);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.print(tl.get());
}).start();
new Thread(()->{
try{
TimeUnit.SECONDS.sleep(timeout:1);
}catch(InterruptedException e) {
e.printStackTrance();
}
tl.set(new Student()) //tl是map的key,new Student()是map的value
}).start();
}
static class Student{
String name = "Meimei"
}
}
这两个线程中&