zoukankan      html  css  js  c++  java
  • 了解ThreadLolocal

    ThreadLocal(线程局部变量)

    • ThreadLocal提供了一种访问某个变量的特殊方式:访问的变量属于当前线程,即保证每个线程的变量不一样,而同一个线程在任何地方拿到的变量都是当前线程私有的,这就是所谓的线程隔离。

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

    • 使用

       /**
        * ThreadLocal在线程A创建的时候,已经为你创建了一个DateFormat,这个DateFormat在该线程中共享。
        * 在线程B开启的时候会创建另外一个DateFormat,那么ThreadLocal和自己new对象的区别呢?ThreadLocal在该线程中的所有方法都可以使用,不需要传递
        */
       public class ThreadLocalTest {
           public static void main(String[] args) {
               System.out.println(DateUtil.THREAD_LOCAL.get().format(new Date()));
           }
       }
       ​
       class DateUtil {
           public static final ThreadLocal<DateFormat> THREAD_LOCAL = new ThreadLocal<DateFormat>() {
               @Override
               protected DateFormat initialValue() {
                   return new SimpleDateFormat("yyyy-MM-dd");
               }
           };
       }
      

        

    • 总结

      ThreadLocal并不是为了解决线程安全问题,而是提供了一种将实例绑定到当前线程的机制,类似于隔离的结果。ThreadLocal最大的用处就是用来把实例变量共享成全局变量,在该线程中的任何方法中都可以访问该实例变量。

  • 相关阅读:
    java复习计划
    超过16位的字符串装16进制
    《将博客搬至CSDN》
    android设置中文字体样式
    布局文件View和ViewGroup
    创建线程的两种方法,继承Thread,继承Runnable
    本地文件的copy复制
    字节流和字符流完成URL下载,并存入本地
    文本过滤器的用法,FileFilter()和FilenameFilter()
    JavaSE笔记
  • 原文地址:https://www.cnblogs.com/hucheng1997/p/11536542.html
Copyright © 2011-2022 走看看