并发编程面试题
并发编程面试题
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
并发编程常见面试题总结二
一、什么是锁消除和锁粗化?锁消除:指虚拟机即时编译器在运行时,对一些代码上要求同步,但被检测到不可能存在共享数据竞争的锁进行消除。 锁粗化:原则上,同步块的作用范围应该尽可能的小,也就是说锁的粒度要尽可能小一点。但是如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作在循环体内,频繁地进行互斥同步也会导致不必要的性能损耗,锁粗化就是增大锁的作用范围。二、为什么说Synchroni...原创 2020-04-05 19:44:42 · 418 阅读 · 0 评论 -
并发编程常见面试题总结四
一、Java中的线程池是如何实现的?在Java中,所谓的线程池中的线程,其实是被抽象为了一个静态内部类Worker,基于AQS实现,存放在线程池的HashSet workers成员变量中; 需要执行的任务存放在成员变量workQueue中,workQueue是一个阻塞队列; 线程池的基本思想就是:从workQueue队列中不断取出需要执行的任务,放在Workers中进行执行;二、如何自定...原创 2020-04-05 20:01:24 · 411 阅读 · 0 评论 -
并发编程常见面试题总结三
一、ReentrantLock是如何实现可重入的?ReentrantLock内部自定义了同步器Sync,其实就是加锁的时候通过CAS算法,将线程对象放到一个双向链表中,每次获取锁的时候,看下当前维护的那个线程ID和当前请求的线程ID是否一样,一样就可重入。二、请说说CyclicBarrier和CountDownLatch的异同?CountDownLatch 是不可以重置的,所以无法重...原创 2020-04-05 19:53:10 · 348 阅读 · 0 评论 -
并发编程常见面试题总结一
一、Synchronized用过么?其原理是什么?Synchronized是由JVM虚拟机实现的一种实现互斥同步的方式,被Synchronized修饰后的程序块编译后的字节码文件中,在编译前后被编译器生成了monitorenter和monitorexit两个字节码指令。在虚拟机执行到monitorenter指令时,首先要尝试获取对象的锁,如果这个对象没有锁定,或者当前线程已经拥有了这个对象...原创 2020-04-05 19:31:03 · 448 阅读 · 0 评论 -
面试题之synchronized与Lock的区别
一、简介今天我们总结一下关于JUC方面的面试题:synchronized与Lock的区别?如果面试遇到这个问题,小伙伴们可以参考从以下几个方面进行回答: 区别 synchronized Lock 是否关键字 synchronized是Java内置关键字 Lock类是一个接...原创 2020-03-16 20:01:01 · 1482 阅读 · 0 评论 -
并发编程常见面试题总结五
一、请谈谈volatile有什么特点,为什么它能保证变量对所有线程的可见性?当一个变量被volatile修饰后,具备两个特性:保证此变量对所有线程的可见性,当一条线程修改了这个变量的值,新值对于其他线程是可以立即得知的,而普通变量做不到这一点。 禁止指令重排序优化,普通变量仅仅能保证在方法执行过程中,得到正确结果,但是不保证程序代码的执行顺序。内存模型定义了8种内存间操作来保证可见性:...原创 2020-04-05 20:08:22 · 525 阅读 · 0 评论