zoukankan      html  css  js  c++  java
  • ThreadLocal的用法

    阿里巴巴 java 开发手册中推荐的 ThreadLocal 的用法:

    public class DateUtil {
        public static final ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>(){
            @Override
            protected DateFormat initialValue() {
                return new SimpleDateFormat("yyyy-MM-dd");
            }
        };
    }
    

    然后我们再要用到 DateFormat 对象的地方,这样调用:

    DateUtils.df.get().format(new Date());

    ThreadLocal 相当于每个线程A在创建的时候,已经为你创建好了一个 DateFormat,这个 DateFormat 在当前这个线程A中共享。其他线程B,再用到 DateFormat 的地方,也会创建一个 DateFormat 对象,这个对象会在线程 B 中共享,直到线程 B 结束。

    也就是说 ThreadLocal 的用法和我们自己 new 对象一样,然后将这个 new 的对象传递到各个方法中。但是到处传递的话,太麻烦了。这个时候,就应该用 ThreadLocal。

    因为数据源是公用的,所以将其设为ThreadLocal,其余线程就可以直接用了。

    如果要使用 ThreadLocal,通常定义为 private static 类型,在我看来最好是定义为 private static final 类型。

    详细介绍

  • 相关阅读:
    CF1208C
    CF1208B
    CF1208A
    CF1206A
    wqy的C题
    wqy的B题
    [POI2005]SAM-Toy Cars
    Gym
    操作系统学习---进程
    C++多线程(POSIX)
  • 原文地址:https://www.cnblogs.com/bihanghang/p/10032820.html
Copyright © 2011-2022 走看看