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最大的用处就是用来把实例变量共享成全局变量,在该线程中的任何方法中都可以访问该实例变量。

  • 相关阅读:
    sharepoint user field
    esata 安装 xp
    webservice without iis
    userdata
    png transparency
    使用命令行生成签名文件并用其对apk文件进行签名
    如何通过备份 Windows 7 “ 两个激活文件”实现重装操作系统后的自行激活
    SQLserver2008打不开的问题
    在mvc3中的@{}问题,mvc3做的有点小bug
    布局new分配 ,
  • 原文地址:https://www.cnblogs.com/hucheng1997/p/11536542.html
Copyright © 2011-2022 走看看