java 并发 面经
   面经  
     sychronized基于什么实现或者说基于什么命令实现  
     锁的升级1  
     JDK1.6为了减少获得锁和释放锁所带来的性能消耗,引入了“偏向锁”和“轻量级锁”,所以在JDK1.6里锁一共有四种状态,无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态(依次升级),它会随着竞争情况逐渐升级。锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。这种锁升级却不能降级的策略,目的是为了提高获得锁和释放锁的效率.  
     并发学习  
  -     学习目标      - 看懂并发程序
 
-     学习资料      -      视频        - 一看并发编程的书我就困得不行,我找找有没有视频课吧,要命。
- 中文的只在慕课上看到. https://www.imooc.com/article/24007?block_id=tuijian_wz
 
 
-      视频        
-     术语      - 独占式
- 共享式
- CAS
- JUC
- java中轻量级锁也是基于cas实现的
- 轻量级锁一般情况下是优于重量级锁(互斥锁)的
-      
 
 
   很多时候Java面试并发部分只考察概念,尤其是面C++的时候。  
     文章  
     牛科网 2018 java线程  
  -     https://www.cnblogs.com/XHJT的博客      -      java笔记--关于线程同步(7种同步方式)        - 多说一句,volatile生产环境别用,绝对是坑,可以修饰布尔类型的成员变量,或者是用在双重检查锁的单例模式这两种场景可以保证线程安全,这个关键字早晚被废弃,国外大神们吐槽很多次了。
- volatile 是不能达到同步效果的~
 
- java笔记--对信号量Semaphore的理解与运用
- Callable<V>接口实现有返回值的线程,Runnable不会返回结果,并且无法抛出异常。
- sync的核心是AQS,AQS的核心是state和双端队列。
 
-      java笔记--关于线程同步(7种同步方式)        
-     JAVA 中的 CAS. https://segmentfault.com/a/1190000013127775      - 乐观锁的实现原理是CAS。
- 当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的信号。
-      悲观锁最大的问题就是阻塞问题        - 悲观锁利用排他锁实现,不允许其他人并发修改。
 
-      CAS的应用:自旋锁。        - 所谓自旋锁,我觉得这个名字相当的形象,在lock()的时候,一直while(true)循环,直到while(true)中的 cas 操作成功为止。
- 在高并发锁竞争比较激烈的情况下轻量级锁会由于长时间自旋消耗cpu从而使得轻量级锁的性能比传统的重量级锁更慢。
- CAS的ABA问题和解决
 
 
-     Java 并发编程. https://segmentfault.com/a/1190000014226007      - volatile
- 原子操作的实现
 
- RocksDB上锁机制. https://www.cnblogs.com/cchust/p/7107392.html
- Java并发编程的艺术·读书笔记.note
-     微信. Java 编程之美:并发编程高级篇之一       - ThreadLocal
- InheritableThreadLocal
- JDK 并发包中 ThreadLocalRandom
 
-     *微信. Java 并发编程之美:并发编程高级篇之二       - rt.jar 中 Unsafe 类
- rt.jar 中 LockSupport 类
- JDK8 新增原子操作类 LongAdder
- JUC 并发包中并发组件 CopyOnWriteArrayList
 
-     微信. Java 编程之美:并发编程高级篇之三      - AQS
- ReentrantLock
- ReentrantLockReadWriteLock
- StampedLock
 
-     并发之Fork/Join框架使用及注意点. http://www.imooc.com/article/24822      - 一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。使用工作窃取(work-stealing)算法,主要用于实现“分而治之”。
 
 查看11道真题和解析
查看11道真题和解析