![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
小龙JWY
大学生一枚,欢迎热爱学习的小伙伴一起探讨和交流。
展开
-
毁三观!打破你对Java并发的认知!
什么是线程什么是锁volatilesynchronized中断原创 2020-05-15 19:57:19 · 622 阅读 · 0 评论 -
全网最权威:再次打破你对synchronized的认知!!!
这篇文章,我会直接把对象头的信息打印出来给你看!!!其实 synchronized 有关的博客我之前也写过,描述的也还算比较清晰,比较深入。比如这篇:99%的人答不对的并发题还有这篇:当面试官怼你 synchronized 性能差时,你拿这篇文章吊打他(ReentrantLock 与 synchronized 的前世今生)这两篇对我来说算是比较古老的文章了,都快有两个月了。而且实际上,个...原创 2020-05-01 16:48:16 · 513 阅读 · 2 评论 -
你真的懂匿名类、lambda、方法引用?先过了这道题再说!!!
先给出一道很简洁的小段 Java 程序,你看一下是否能答出正确结果。在类中有一个静态变量;静态方法块中,抛出子线程修改变量的值,然后等待子线程执行结束;main 方法查看变量的值。public class LambdaTest { // 静态变量初始为false static boolean b = false; static { // 抛出子线程将...原创 2020-04-09 17:37:45 · 1410 阅读 · 2 评论 -
没听说过CyclicBarrier、Phaser、Semaphore?面试官说:你可能没学过Java
Java 中的类非常非常多,虽然你不一定都用过,但是,对于一些关于线程交互、同步、通信等等相关的类我们还是需要去学习和了解的。比如大名鼎鼎的 AQS,Lock…等等。在我这一篇博客中,我主要去讲一些平时大家可能会忽略的一些但是又不能不知道的一些并发工具类,我会从主要的使用、原理,和一部分底层的代码来帮助大家理解。前半部分讲解使用,后半部分分析源码(源码是有关 AQS 的知识的,如果不懂 A...原创 2020-03-30 16:31:11 · 465 阅读 · 0 评论 -
全网最权威讲解:线程池源码分析
学习忌浮躁不要怕源码,毕竟 AQS 我都带你看过来了,线程池就是小意思。而且我的注释和分析已经不能再详细了。。文章目录线程池基本JDK 提供的默认类常用变量execute 执行方法addWorker 创建线程Worker 工作线程runWorker 线程执行核心方法getTask线程池基本首先有几个接口要了解:第一个是 Executor,第二是 ExecutorService,再后面才...原创 2020-03-28 17:14:03 · 2032 阅读 · 2 评论 -
Lock 的一百种玩法(剖析 Java Lock 原理)
大家都知道 Java 中有 synchronized 实现锁,也有 Lock 接口来实现显示的锁。synchronized 关键字更多贴近 Java 虚拟机,而 Lock 则更多贴近我们的 Java 代码。Lock 也具备了很多传统 synchronized 不具备的功能,本身也包含了很多的设计思维。学习 Lock 可以很好地提升一个人的 Java 功底,也能从中隐示地提高一个人的编程素养。学习...原创 2020-03-25 12:01:46 · 471 阅读 · 0 评论 -
程序gc卡顿?我换了G1就高枕无忧了(从时代剖析垃圾收集器原理)
JVM 是 Java 运行的根基原创 2020-03-25 10:47:59 · 3665 阅读 · 0 评论 -
共享锁重入次数怎么记录都不知道,谁敢给你涨薪(AQS源码阅读之读写锁)
读锁重入次数怎么分别保存?读写锁的获取数量如何原子性修改?其实之前在学习 Lock 的时候,学得比较粗糙,我也相信很多人都知道,像 ReentrantLock,ReadWriteLock 都是基于 AQS,CAS 实现的。通过状态位(或者说标志位)state 来 CAS 抢锁,通过一个 AQS 链表队列,来实现线程的排队,LockSupport 来实现线程的阻塞与唤醒,通过模板方法设计模式,来...原创 2020-03-20 23:37:57 · 5282 阅读 · 0 评论 -
全网最权威:AQS互斥锁源码讲解(基于ReentrantLock)
AQS 加锁自旋几次?排队的线程修改前一个线程?一般人真不知道。其实之前在学习 Lock 的时候,学得比较粗糙,我也相信很多人都知道,像 ReentrantLock,ReadWriteLock 都是基于 AQS,CAS 实现的。通过一个状态位(或者说标志位)来 CAS 抢锁,通过一个 AQS 链表队列,来实现线程的排队,LockSupport 来实现线程的阻塞与唤醒,通过模板方法设计模式,来对...原创 2020-03-18 11:32:24 · 9001 阅读 · 2 评论 -
多线程交替执行的一万种写法(记一道面试题)
多线程是 Java 的经典,也是重难点。很多时候,可能你反复运行了你的代码,确认没有了问题。但是很可能线上运行的某一天,突然出错挂了。事后反复寻找原因,却是死活重现不了场景。所以我们有必要深入地学习,不放过每一个细节。题目:让两个线程依次打印 1A2B3C4D5E6F7G谁都会想到的写法我特地把这个最常见的用法放在最前边,由浅入深。也花了很多的篇幅,去描述这个最常见简单的写法,可能潜在的各种...原创 2020-03-15 08:21:49 · 7754 阅读 · 1 评论 -
99%的人答不对的并发题(从JVM底层理解线程安全,硬核万字长文)
众所周知,java 是一门可以轻松实现多线程的语言,再加之目前的社会环境和业务需求,对多线程的使用和高并发的场景也越来越多,与之带来的就是并发安全的问题。如何在多线程的环境下写出符合业务需求的代码,是程序员的基本功。而理解 JVM 中的线程特性,则是我们扎实根底的第一步。学习忌浮躁。首先大家要知道一点,JVM 帮我们屏蔽了不同的操作系统的不同特性,来实现一次编写到处运行的特点。所以有个很关键的...原创 2020-03-12 12:17:25 · 12071 阅读 · 10 评论 -
拆箱装箱都不知道?(从源码带你理解包装类)
众所周知,java 是一门面向对象的高级语言。但是 java 中的基本类型不能作为对象使用,为了解决对象的调用问题,为每个基本类型创造了对应的包装类型。先来看一道包装类的题目吧int a = 10;Integer b = 10;System.out.println(a == b); ①System.out.println(b.equals(a)); ②Integer ...原创 2020-03-07 10:54:53 · 308 阅读 · 0 评论 -
Java 并发基础总结
说实话,这么长的时间以来,很多的并发编程的知识都是零零散散的积累和学习到的,可能是通过许多博客,或者是平时学习工作中代码出现过的问题,也可能是听老师和同学说起过(其实我的大学的老师在这方面都比较菜,毕竟他们的主要研究方向不在这,也不做业务)。所以很多时候,对知识的理解力、思维横向性、总体把握能力都略感不足。因此需要一个系统的总结,将知识首尾贯穿,方能有心体通透、彻悟感叹。学习切忌浮躁线程状态...原创 2020-03-06 10:42:05 · 439 阅读 · 0 评论 -
手撕 HashMap(空口无凭,实战为真)
如果你还不是很理解HashMap,建议你先看我上一篇博客,深入理解HashMap。写HashMap的流程,写Map接口表明要实现哪些方法,实现AbstractMap抽象类实现一些基本方法(如 toString(),isEmpty() 等等),然后写HashMap类,从内部需要哪些成员开始,定义内部类Node,然后完成构造方法,之后写入最重要的 put(),get(),remove()三个最重要...原创 2020-03-05 10:05:09 · 561 阅读 · 1 评论 -
分享 HashMap 的精髓,它永远比你自己写 map 的效率高
HashMap是面试时几乎必问的数据结构,也是Java中非常常用的一个数据结构,所以了解它的原理是对面试有极大的帮助,也是自身非常好的提升。文章目录为什么要使用hash表hash表如何达到这样的查找效率为什么要使用hash表hash结构是为了查询效率而诞生的,是使查询速度最快化的结构,时间复杂度为O(1),真正达到了瞬间查找的目的。hash表如何达到这样的查找效率hash表采用空间换时间...原创 2020-03-04 09:43:56 · 1682 阅读 · 3 评论 -
当面试官怼你 synchronized 性能差时,你拿这篇文章吊打他(ReentrantLock 与 synchronized 的前世今生)
一天,你进入了一个大厂面试。坐立不安之中,一个秃头中年男子,穿着一个发灰了的格子衬衫,戴着一副镜片厚9mm的眼镜,稳如磐石突然朝着你说到:“就是你这个小毛头来面试吧。”心里一惊,这怕不是神仙级架构师。但还是故作镇定:“面试官您好,我是xxx…”面试过程中……面试官随手抛来一句:“简单说说 synchronized 关键字吧”。简单说说???嗯,面试官人还不错。再加上我面试前的精心准备,和饱...原创 2020-03-03 09:57:04 · 1007 阅读 · 0 评论 -
深入理解Object类
众所周知 java 是一门面向对象的高级语言,除了基本类型之外,其他的所有类(包括枚举类 enum)都继承于基类,也就是 Object 类。所以深入了解 java 语言的类特征,Object 类的基本方法是非常有必要的。下面请先看几个问题,来检测你对 Object 类了解多少。知不足,方可改之。问题1. Object 类中有哪些方法2. Object 类中哪些方法被标注为 native,是什么...原创 2020-03-02 16:56:00 · 439 阅读 · 0 评论