所以, ThreadLocal变量 只用于线程内部共享,是线程安全的。
私有变量线程不安全,例如,利用一个Runnable实例启动2个线程,这2个线程就可以共同拥有 私有变量。
java一个线程cas写普通变量,另一个线程能读到。
java 线程锁 synchronizedthreadlocal变量和单个线程关联,简单来讲,类似于(具体可参考jdk源码):Java代码public class FakeThreadLocal<T>{private final Map<Thread, T>values = new HashMap<Thread, T>()public T get() {return values.get(Thread.currentThread())}。
共享进程资源:
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间)。
这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。