小编典典

我应该何时以及如何使用 ThreadLocal 变量?

all

什么时候应该使用ThreadLocal变量?

它是如何使用的?


阅读 94

收藏
2022-02-28

共1个答案

小编典典

一种可能的(也是常见的)用途是当您有一些不是线程安全的对象,但您希望避免同步访问该对象时(我正在看着您,SimpleDateFormat)。相反,给每个线程它自己的对象实例。

例如:

public class Foo
{
    // SimpleDateFormat is not thread-safe, so give one to each thread
    private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>(){
        @Override
        protected SimpleDateFormat initialValue()
        {
            return new SimpleDateFormat("yyyyMMdd HHmm");
        }
    };

    public String formatIt(Date date)
    {
        return formatter.get().format(date);
    }
}

文档

2022-02-28