Day486.尚硅谷之高频重点面试题② -面经

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day486.尚硅谷之高频重点面试题② -面经相关的知识,希望对你有一定的参考价值。

高频重点面试题②

一、说说锁

  • 公平锁

    • 每个线程获取锁的时候,会根据维护的等待队列去一个一个按次序获取锁
    • 吞吐量大
  • 非公平锁

    • 并不会根据声明的顺序去严格按照顺序获取锁,会“插队”,尝试失败就会再采用类似公平锁机制

    • 会出现饥饿等情况

  • 可重入锁(递归锁)

    锁里套锁,直接获取锁内锁的锁

    • 避免了死锁

  • 自旋锁

    尝试获取锁的线程不会立刻阻塞,而是采用循环的方式去获取锁,通过循环代替阻塞

    • 减少线程上下文切换
    • 消耗CPU资源
    • 手写自旋锁

  • 写锁(独占锁)

    只能被一个线程所持有

  • 读锁(共享锁)

    可被多个线程所持有


二、CountDownLatch/CyclicBarrier/Semaphore使用过吗?

https://achang.blog.csdn.net/article/details/117935179

  • CountDownLatch倒计时门栓

    倒数count为0后,执行await()方法阻塞的线程就发车

    所有人出了门,保安才锁门

  • CyclicBarrier循环栅栏

    满足数量条件,就发车

    人到齐了,就开会

  • Semaphore信号量

    “许可证”,数量有限


三、阻塞队列知道吗?

之前的学习笔记

  • 为什么用?有什么好处?

  • 知道哪些实现类吗?

  • API

以上是关于Day486.尚硅谷之高频重点面试题② -面经的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch-尚硅谷(9. 面试题)学习笔记

iOS经典面试题之深入分析block相关高频面试题

尚硅谷axios入门与源码分析视频教程发布!

Java核心面试宝典Day14“线程池”高频面试题总结!✊✊✊

Java核心面试宝典Day14“线程池”高频面试题总结!✊✊✊

动态规划高频题汇总 | 今日直播划重点