多线程并发的解决方案 volatile synchronized notify notifyAll wait关键字分析
1.ThreadLocal用法 在java中,如果一个变量需要被多个线程访问,可以使用volatile来声明它为“易变的”。而假如一个变量要被持有它的某个线程独享,在java中,它可以使用java.lang.ThreadLocal类来实现线程本地存储的功能。这样,数据便只在同一个线程内可见和共享,因此,即便不同步也能保证线程之间不出现数据争用。 ThreadLocal使得各线程能够保持各自独立的一个对象,通过ThreadLocal.set()来设置对象的值,保存在每个线程自己都有的一个map对象当中,每个ThreadLocal对象会有一个线程范围内唯一hashcode作为key,ThreadLocal.get()内部通过这个key从map中取值,因此取出来的是各自自己线程中的对象,ThreadLocal实例事实上只是作为map的key来使用的 ThreadLocal例子 package com.arch.demo; public class ThreadLocalTest { public static void main(String[] args) { ThreadLocal<Integer> count = new ThreadLocal<>(); ConcurrentThread t1 = new ConcurrentThread(count);