随笔
线程局部变量:
为什么要整 局部变量呢?
我的理解:局部变量 意味着 不会发生 并发的更新,只有一个线程,能够保证数据 不会遭到破坏。为每个线程都创建局部对象 ,又太浪费了。
ThreadLocal 辅助类 为各个线程提供各自的实例。
public void showDate(){
ThreadLocal<SimpleDateFormat> local =
ThreadLocal.withInitial(()-> new SimpleDateFormat("yyyy-MM-dd"));
String format = local.get().format(new Date());
}
常用方法:
- withInitial():创建一个线程局部变量,初始值通过调用给定的 supplier 生成。
- T get():得到这个线程的当前值,如果首次调用,会调用 initialize 来得到这个值。
- void set():为这个线程设置一个新值。
- protected initialize() ,应该