Java基础知识日积月累(Tip of the Day26)
目录
1.jdk1.7和1.8CurrentHashMap添加元素过程
1.jdk1.7和1.8CurrentHashMap添加元素过程
2.线程的状态
3.虚拟机中线程状态
4.线程池
5.线程池一般不做销毁
6.concurrent包下的类都是线程安全的
7.创建线程池对象
8.数据可见性问题解释
9.同步代码块Sync运行方式,变量副本就是锁
这里的变量副本都是线程本身的变量副本进行交换清空.
ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。
采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。
ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为对应线程的变量副本。
ThreadLocal在Spring中发挥着巨大的作用,在管理Request作用域中的Bean、事务管理、任务调度、AOP等模块都出现了它的身影。
Spring中绝大部分Bean都可以声明成Singleton作用域,采用ThreadLocal进行封装,因此有状态的Bean就能够以singleton的方式在多线程中正常工作了。
10.原子性问题在i++和++i内存要有好几部进行产生
11.轻量级锁解决原子性问题
12.轻量级锁CAS和重量级锁Sync的区别
13.并发工具类
14.ctrl+h直接查看继承关系
15.等待线程机制