ThreadLocal 作用

ThreadLocal 通过操作Thread实例中的(ThreadLocalMap)threadlocals对象来实现为对应线程单独创建一份对应的变量副本的作用,避免由于多线程操作对象而引起的对象线程不安全的问题。
ThrealLocal 基本使用方式(以SimpleDateFormate为例):

  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. /**
  6. * 使用ThreadLocal以空间换时间解决SimpleDateFormat线程安全问题。
  7. *
  8. * @author
  9. *
  10. */
  11. public class DateUtil {
  12. private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
  13. @SuppressWarnings("rawtypes")
  14. private static ThreadLocal threadLocal = new ThreadLocal() {
  15. protected synchronized Object initialValue() {
  16. return new SimpleDateFormat(DATE_FORMAT);
  17. }
  18. };
  19. public static DateFormat getDateFormat() {
  20. return (DateFormat) threadLocal.get();
  21. }
  22. public static Date parse(String textDate) throws ParseException {
  23. return getDateFormat().parse(textDate);
  24. }
  25. }