ThreadLocal变量与一般成员变量有什么区别?

解决方案 »

  1.   

    是和线程相关的。这么说吧你可以把这个变量想想成这个样子的。
    当然了,我说的是原理class ThreadId { 
        int Id = 0;
    }
    那么一个ThreadLocal的变量,相当于
    HashMap<ThreadId, Local> threadLocal = new ...
    明白我的意思吗?
    而且我这些的这些,可能是Java的实现
      

  2.   

    呵呵,会问这个类的用法,看来你还有两下,
    这个类主要是对变量的线程管理,主要用于线程安全的并发处理,ThreadLocal并不能替代同步机制,两者面向的问题领域不同。同步机制是为了同步多个线程对相同资源的并发访问,是为了多个线程之间进行通信的有效方式;而ThreadLocal是隔离多个线程的数据共享,从根本上就不在多个线程之间共享资源(变量),这样当然不需要对多个线程进行同步了。所以,如果你需要进行多个线程之间进行通信,则使用同步机制;如果需要隔离多个线程之间的共享冲突,可以使用ThreadLocal同步,并发,这里面的些东西值得你好好研究一下,很多的java底层实现都必须要用到它