2020-04-20发表2022-04-21更新Java12 分钟读完 (大约1811个字)JUC包下同步工具类及Condition队列在上篇关于从ReentrantLock看JUC中AQS的这篇文章中,留下了一个非常重要的Condition模块,并未去分析。而这个模块,在实现BlockingQueue的过程中,用到了。因此特地回过头来,去补习一下关于Condition的实现与原理、以及JUC下面其他的同步工具类的使用。Condit阅读更多
2020-04-03发表2022-04-21更新Java13 分钟读完 (大约1986个字)Java中的Queue之概述对技术还是得有敬畏之心,总觉得Queue好像没啥,其实只是没有仔细去了解过。不过自从上次认真地看了线程池的源代码之后,发现Queue是一个很神奇的集合类。Queue的形式有无界、有界,还有堵塞、非堵塞。初略想想,这个实现可能就不简单。一个问题在线程池中,自定义线程池时,放入什么样的队列可以让线程数达阅读更多
2020-03-17发表2022-04-21更新Java28 分钟读完 (大约4258个字)Java中的线程池从精通到入门说真的,我一直认为线程池很简单,也没去看过它的实现,大概了解过其中的原理,但是并未深入学习。一方面,了解过之后很长时间不去看,非常容易忘;另一方面,还是深入源码得到的信息才会比较深刻,还能避免背书式学习。继承结构说明在Executors中,有几个静态方法,预设了几个ThreadPoolExecuto阅读更多
2019-10-24发表2022-04-21更新Java28 分钟读完 (大约4238个字)JUC源码学习之AbstractQueuedSynchronizer源码基于的Oracle JDK版本为:11.0.5什么是CLH队列简单理解是一个双向链表,链表中存放的是包含线程在内的信息,队首的是正在执行的线程,后面的是等待执行的线程,如下图所示:Node概述The wait queue is a variant of a "CLH" (Cr阅读更多
2019-03-30发表2022-04-21更新Java2 分钟读完 (大约286个字)关于String与常量池的问题面试必问题吧,但是好像还有一个比较容易漏的地方。总体的流程,搞清楚执行此代码后,他们的结果是什么,以及为什么就差不多算理解了。String a1 = new String("ab");System.out.println(a1 == a1.intern());//falseStr阅读更多
2018-11-10发表2022-04-21更新Java6 分钟读完 (大约887个字)Spring Data Mongo DB去掉插入的_class字段分析大致的框架是从网上找来的资源。但是遇到了两个问题:运行代码后,MongoDB数据库没有收到改变。想起了在yaml中配置的mongodb参数,那些参数,data的上一层是spring,如下:spring boot在加载这些数据时,会得到一个MongoProperties。按住Ctrl,然后点在那些值上阅读更多
2018-08-31发表2022-04-21更新Java7 分钟读完 (大约1088个字)如何在macOS中编译OpenJDK10源代码这段时间准备开始学习《深入理解Java虚拟机》,先搭个可以调试的环境出来。按照书中的配置,感觉有许多问题的,这篇文章就用来记录成功编译OpenJDK源代码的一些过程,以及其中的一些配置。配置信息综述系统版本:macOS 10.14 BetaOpenJDK版本:jdk-10+46,TAG链接、zip包阅读更多
2018-08-30发表2022-04-21更新Spring系列 / Java12 分钟读完 (大约1807个字)Java中的注解与Spring中的常用注解在Spring中,有很多的注解,比如@Controller、@Service什么的。之前对注解的了解不够,在使用SSM时,在想到底什么是注解,它的工作原理又是什么或者说它是怎么工作的,为什么注解了之后就能达到某个功能呢?带着这样的一个疑问,开始探索之旅吧!常见的Java内置的注解以及源代码@Over阅读更多
2018-07-31发表2022-04-21更新Java12 分钟读完 (大约1866个字)Java多线程系列(2)同步器的使用与解析CountDownLatchA synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.A Cou阅读更多
2018-07-17发表2022-04-21更新Java2 分钟读完 (大约314个字)Java多线程系列(1)对一个多线程同步代码的分析注意synchronized关键字使用的是实例锁即可。即m1()与m2()是按照某个次序执行,所以在m1()中,一定会输出b = 1000。至于主线程中的输出,则需要考虑执行顺序。package basic.multithread;public class TestSync2 implements 阅读更多