一,并发多线程

1,为什么要多线程

2,线程生命状态,线程池

3,JMM线程模型

4,syn加锁

1,同步锁,

2,JVM内置锁,

3,可以加载静态代码快,加载方法,加载类上

4,加锁原理(Monitor)

(1)1.6之前 Linux-Mutex,互斥锁,重量级锁。性能低。线程上下文的切换

(2)1.6之后锁的优化升级,偏向锁,轻量级锁,重量级锁。

(3)怎么实现。在JAVA的数据结构中有对象头,实例数据,对饮填充位,

(4)偏向状态。0.1(后2位)锁状态标致,在对象头里面记录当前对象的锁的状态,根据标记为一步步升级,锁的升级不可逆。

(5)JAVA 并发包,lock,依赖状态同步器,AQS,可重入,公平,非公平(队列,先进先出)。可中断

(6)volatile 修饰属性

轻量级锁机制,可见性,有序性,但是不保证原子性

HashMap

1,7之前,并发场景出现链表环,死锁,数据丢失,数组+链表

容量=16

扩容因子:0.75

转红黑树:>8和数组的大小 大于等于64

泊松分布。

Redis底层就是hash表。

concurrentHashMap

线程安全,加锁过程,

扩容

红黑树:treeMap 基于红黑树做的