什么时候应该使用ThreadLocal变量?
ThreadLocal
它是如何使用的?
一种可能的(也是常见的)用途是当您有一些不是线程安全的对象,但您希望避免同步访问该对象时(我正在看着您,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); } }
文档。