• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jzmws
V2EX  ›  程序员

ThreadLocal 如何带参数进行初始化

  •  
  •   jzmws · Dec 24, 2019 · 4881 views
    This topic created in 2508 days ago, the information mentioned may be changed or developed.

    SimpleDateFormat 非线程安全, 在阿里 Java 开发手册上推荐以下写法 ,可是这种写法参数是写固定的,而实际需要传入指定参数. 比如说只要显示年月日

    private ThreadLocal dateFormat = new ThreadLocal() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } };

    问题: 如何在调用或者初始化时候传入自定义参数.

    10 replies  •  2019-12-25 11:43:08 +08:00
    Kaiv2
    Kaiv2
    Dec 24, 2019 via Android
    1
    放到调用处啊
    twirain
    twirain
    Dec 24, 2019
    2
    新建个类
    chendy
    chendy
    Dec 24, 2019
    3
    format 是动态的,就不需要做这个 ThreadLocal 的优化了
    或者做多个 ThreadLocal 保存各种要用到的 format
    SoloCompany
    SoloCompany
    Dec 24, 2019
    4
    SimpleDateFormat 不是线程安全的这没错
    问题是你为什么要重用他,不重用就不存在线程安全问题
    jenschen
    jenschen
    Dec 24, 2019 via iPhone
    5
    ThreadLocal 是对每个线程复制一个值,来解决并发问题。直接用就可以了
    lxk11153
    lxk11153
    Dec 24, 2019
    6
    org.apache.commons.lang3.time.FastDateFormat
    Raymon111111
    Raymon111111
    Dec 24, 2019
    7
    如果是专门想解决 SimpleDateFormat 的问题

    那答案是不用这个类, 有很多更好用的替代类
    CStarter
    CStarter
    Dec 25, 2019 via Android
    9
    这个类用的时候直接 new,不要复用。
    非要复用的话,自定义类继承 Threadlocal,定义自己的方法
    hzgit
    hzgit
    Dec 25, 2019
    10
    ThreadLocal 初始化:静态方法 withInitial
    SimpleDateFormat 非线程安全:LocalDateTime/LocalDate/LocalTime
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2698 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 13:09 · PVG 21:09 · LAX 05:09 · JFK 08:09
    ♥ Do have faith in what you're doing.