2024年4月28日
摘要: 写在开头 最近是和java.util.concurrent.locks包下的同步类干上了,素有 并发根基 之称的concurrent包中全是精品,今天我们继续哈,今天学习的主题要由一个大厂常问的Java面试题开始: 小伙子,来说一说Java中的读写锁,你都用过哪些读写锁吧? 这个问题小伙伴们遇到了该 阅读全文
posted @ 2024-04-28 08:43 JavaBuild 阅读(109) 评论(0) 推荐(0) 编辑
  2024年4月22日
摘要: 写在开头 在过去的博文中我们学习了ReentrantLock 与 synchronized这两种Java并发使用频率最高的同步锁,在很多大厂面试题中有个经典考题: ReentrantLock 与 synchronized异同点对比! 今天我们针对这一考题来做一个尽可能全面的总结哈。 Reentran 阅读全文
posted @ 2024-04-22 09:07 JavaBuild 阅读(262) 评论(0) 推荐(1) 编辑
  2024年4月21日
摘要: 写在开头 随手一翻,发现对于Java中并发多线程的学习已经发布了十几篇博客了,多线程 是Java基础中的重中之重!因此,可能还需要十几篇博客才能大致的讲完这部分的知识点,初学者对于这部分内容一定要多花心思,不可马虎!今天我们继续来学习一个重要知识点:ReentrantLock ReentrantLo 阅读全文
posted @ 2024-04-21 11:30 JavaBuild 阅读(142) 评论(0) 推荐(0) 编辑
  2024年4月16日
摘要: 写在开头 面试官:同学,AQS的原理知道吗? 我:学过一点,抽象队列同步器,Java中很多同步工具都是基于它的... 面试官:好的,那其中CyclicBarrier学过吗?讲一讲它的妙用吧 我:啊,这个,这个我平时写代码没用过... 面试官:那你回去再学学吧! 随着Java的国内竞争环境逐渐激烈,面 阅读全文
posted @ 2024-04-16 08:31 JavaBuild 阅读(223) 评论(0) 推荐(1) 编辑
  2024年4月14日
摘要: 写在开头 在很多的面经中都看到过提问 CountDownLatch 的问题,正好我们最近也在梳理学习AQS(抽象队列同步器),而CountDownLatch又是其中典型的代表,我们今天就继续来学一下这个同步工具类! CountDownLatch有何作用? 我们知道AQS是专属于构造锁和同步器的一个抽 阅读全文
posted @ 2024-04-14 15:10 JavaBuild 阅读(280) 评论(0) 推荐(1) 编辑
  2024年4月13日
摘要: 写在开头 在上几天写《基于AQS手写一个同步器》时,很多同学留言说里面提到的Semaphore,讲得太笼统了,今天趁着周末有空,咱们就一起详细的学习和梳理一把 Semaphore。 什么是Semaphore? 在前面我们讲过的synchronized 和 ReentrantLock 都是一次只允许一 阅读全文
posted @ 2024-04-13 20:28 JavaBuild 阅读(215) 评论(1) 推荐(1) 编辑
  2024年4月10日
摘要: 写在开头 今天在牛客上看到了一个帖子,一个网友吐槽美团一面上来就让手撕同步器,没整出来,结果面试直接凉凉。 就此联想到一周前写的一篇关于AQS知识点解析的博文,当时也曾埋下伏笔说后面会根据AQS的原理实现一个自定义的同步器,那今天就来把这个坑给填上哈。 常用的AQS架构同步器类 自定义同步器实现步骤 阅读全文
posted @ 2024-04-10 21:41 JavaBuild 阅读(399) 评论(0) 推荐(0) 编辑
  2024年4月4日
摘要: 写在开头 上篇文章写到CAS算法时,里面使用AtomicInteger举例说明,这个类在java.unit.concurrent.atomic包中,存储的都是一些原子类,除此之外,“java.unit.concurrent”,这个包作为Java中最重要的一个并发工具包,大部分的并发类都在其中,我们今 阅读全文
posted @ 2024-04-04 07:43 JavaBuild 阅读(238) 评论(0) 推荐(0) 编辑
  2024年3月30日
摘要: 写在开头 在介绍synchronized关键字时,我们提到了锁升级时所用到的CAS算法,那么今天我们就来好好学一学这个CAS算法。 CAS算法对build哥来说,可谓是刻骨铭心,记得是研二去找实习的时候,当时对很多八股文的内容浅尝辄止,很多深奥的知识点只是知道个概念,源码看的也不深,代码量也不够,京 阅读全文
posted @ 2024-03-30 09:14 JavaBuild 阅读(483) 评论(0) 推荐(0) 编辑
  2024年3月26日
摘要: 写在开头 最近发现自己记忆力严重下滑,很多sql命令,linux命令都记不住,特别是linux命令,很多命令参数很多,一段时间不用,再去使用就需要从网上重查了,很烦人,为此花了一些时间把之前笔记中的Linux命令给整理了一下,汇总出30个常用的分享出来,下次再想不起来直接看这篇文章就行了。 1、Li 阅读全文
posted @ 2024-03-26 10:38 JavaBuild 阅读(1683) 评论(6) 推荐(12) 编辑
  2024年3月24日
摘要: 写在开头 面试官:小伙子,多线程中锁用过吗? 我:那是自然! 面试官:那你知道synchronized的优化吗? 我:synchronized作为重锁,开销大,在早期不被推荐使用,后期进行了优化,至于怎么优化的话,您让我想想哈... 面试官:好的,那你出去好好想吧! 对于synchronized的优 阅读全文
posted @ 2024-03-24 22:25 JavaBuild 阅读(430) 评论(2) 推荐(3) 编辑
  2024年3月23日
摘要: 写在开头 在之前的博文中,我们介绍了volatile关键字,Java中的锁以及锁的分类,今天我们花5分钟时间,一起学习一下另一个关键字:synchronized。 synchronized是什么? 首先synchronized是Java中的一个关键字,所谓关键字,就是Java中根据底层封装所赋予的一 阅读全文
posted @ 2024-03-23 11:24 JavaBuild 阅读(171) 评论(0) 推荐(1) 编辑
  2024年3月20日
摘要: 写在开头 在上几篇博文中,我们聊到过volatile关键字,用它修饰变量可以保证可见性与有序性,但它并不是锁,在使用时并不会阻塞线程,且不保证原子性,属于一种轻量级、高效的同步方式,因此,如果我们的使用场景仅需要保持可见性或者有序性,那可选择volatile,但如果必须保证原子性的话,volatil 阅读全文
posted @ 2024-03-20 22:34 JavaBuild 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 写在开头 在之前的学习我们了解到,为了充分利用缓存,提高程序的执行速度,编译器在底层执行的时候,会进行指令重排序的优化操作,但这种优化,在有些时候会带来 有序性 的问题。 那何为有序性呢?我们可以通俗理解为:程序执行的顺序要按照代码的先后顺序。 当然,之前我们还说过发生有序性问题时,我们可以通过给变 阅读全文
posted @ 2024-03-20 08:29 JavaBuild 阅读(173) 评论(0) 推荐(1) 编辑
  2024年3月19日
摘要: 写在开头 在之前的几篇博文中,我们都提到了 volatile 关键字,这个单词中文释义为:不稳定的,易挥发的,在Java中代表变量修饰符,用来修饰会被不同线程访问和修改的变量,对于方法,代码块,方法参数,局部变量以及实例常量,类常量多不能进行修饰。 自JDK1.5之后,官网对volatile进行了语 阅读全文
posted @ 2024-03-19 08:36 JavaBuild 阅读(246) 评论(0) 推荐(0) 编辑
  2024年3月18日
摘要: 写在开头 在之前的几篇博文中,我们都提到了 volatile 关键字,这个单词中文释义为:不稳定的,易挥发的,在Java中代表变量修饰符,用来修饰会被不同线程访问和修改的变量,对于方法,代码块,方法参数,局部变量以及实例常量,类常量多不能进行修饰。 自JDK1.5之后,官网对volatile进行了语 阅读全文
posted @ 2024-03-18 08:41 JavaBuild 阅读(221) 评论(0) 推荐(4) 编辑
  2024年3月16日
摘要: 写在开头 面试官:小伙子,JMM了解吗? 我:JMM(Java Memory Model),Java内存模型呀,学过的! 面试官:那能给我详细的聊一聊吗,越详细越好! 我:嗯~,确定越详细越好?起码得说一万字,您有时间听完? 面试官:你要是真能说一万字全是干货的话,我当场拍板要你,给你SSP! 我: 阅读全文
posted @ 2024-03-16 18:20 JavaBuild 阅读(283) 评论(1) 推荐(0) 编辑
  2024年3月14日
摘要: 写在开头 在线程的生命周期中,不同状态之间切换时,可以通过调用sleep()、wait()、join()、yield()等方法进行线程状态控制,针对这一部分知识点,面试官们也会做做文章,比如问你这些方法的作用以及之间的区别。 那么今天我们就一起来总结一下这几个方法的作用及区别,先画一个思维导图梳理一 阅读全文
posted @ 2024-03-14 22:24 JavaBuild 阅读(511) 评论(0) 推荐(3) 编辑
  2024年3月13日
摘要: 写在开头 经过上几篇博文的学习,我们知道在Java中可以通过new Thread().start()创建一个线程,那今天我们就来思考另外一个问题:线程的终止 自然终止有两种情况: 1. 线程的任务执行完成; 2. 线程在执行任务过程中发生异常。 start之后,如果线程没有走到终止状态,我们该如何停 阅读全文
posted @ 2024-03-13 12:11 JavaBuild 阅读(487) 评论(0) 推荐(0) 编辑
  2024年3月12日
摘要: 写在开头 在写完上一篇文章《Java面试必考题之线程的生命周期,结合源码,透彻讲解!》后,本以为这个小知识点就总结完了。 但刚刚吃晚饭时,突然想到了多年前自己面试时的亲身经历,决定再回来补充一个小知识点! 记得是一个周末去面试Java后端开发工程师岗位,面试官针对Java多线程进行了狂轰乱炸般的考问 阅读全文
posted @ 2024-03-12 08:21 JavaBuild 阅读(471) 评论(0) 推荐(3) 编辑
  2024年3月10日
摘要: 写在开头 在前面的几篇博客里,我们学习了Java的多线程,包括线程的作用、创建方式、重要性等,那么今天我们就要正式踏入线程,去学习更加深层次的知识点了。 第一个需要学的就是线程的生命周期,也可以将之理解为线程的几种状态,以及互相之间的切换,这几乎是Java多线程的面试必考题,每一年都有大量的同学,因 阅读全文
posted @ 2024-03-10 21:24 JavaBuild 阅读(264) 评论(0) 推荐(2) 编辑
  2024年3月9日
摘要: 写在开头 面试官:小伙子请聊一聊Java中的精灵线程? 我:什么?精灵线程?啥时候精灵线程? 面试官:精灵线程没听过?那守护线程呢? 我:守护线程知道,就是为普通线程服务的线程嘛。 面试官:没了?守护线程的特点,怎么使用,需要注意啥,Java中经典的守护线程都有啥? 我:不知道。。。 这的天,面试一 阅读全文
posted @ 2024-03-09 16:17 JavaBuild 阅读(661) 评论(3) 推荐(1) 编辑
  2024年3月8日
摘要: 写在开头 在上篇博文中我们提到小伙伴去面试,面试官让说出8种线程创建的方式,而他只说出了4种,导致面试挂掉,在博文中也给出了10种线程创建的方式,但在文章的结尾我们提出:真正创建线程的方式只有1种,剩下的衍生品多是套壳,那么在这篇文章中,我们来解释一下缘由! 线程创建方式可先阅读这篇文章:面试官让说 阅读全文
posted @ 2024-03-08 08:23 JavaBuild 阅读(360) 评论(0) 推荐(0) 编辑
  2024年3月7日
摘要: 写在开头 昨天有个小伙伴私信说自己面试挂在了“Java有几种创建线程的方式”上,我问他怎么回答的,他说自己有背过八股文,回答了:继承Thread类、实现Runnable接口、实现Callable接口、使用线程池这四种,但是面试官让说出8种创建方式,他没说出来,面试就挂了,面试官给的理由是:只关注八股 阅读全文
posted @ 2024-03-07 10:32 JavaBuild 阅读(1063) 评论(2) 推荐(4) 编辑
  2024年3月6日
摘要: 写在开头 在过去的2023年双11活动中,天猫的累计访问人次达到了8亿,京东超60个品牌销售破10亿,直播观看人数3.0亿人次,订单支付频率1分钟之内可达百万级峰值,这样的瞬间高并发活动,给服务端带来的冲击可想而知,就如同医院那么多医生,去看病挂号时,有时候都需要排队,对于很多时间就是金钱的场景来说 阅读全文
posted @ 2024-03-06 08:50 JavaBuild 阅读(389) 评论(0) 推荐(2) 编辑