之前说的AQS,其实AQS的设计很难达到的高度,开发中常用的工具想出来,知道大家有这个需求,开发人员需求可以通过这种方式降低代码量,软件开发思维很重要,抽象的模板方法,模板方...
之前说的AQS,其实AQS的设计很难达到的高度,开发中常用的工具想出来,知道大家有这个需求,开发人员需求可以通过这种方式降低代码量,软件开发思维很重要,抽象的模板方法,模板方...
上节说了ConcurrentHashMap,之前的知识会映射到今天的内容点上面,学了这些方法到底怎么用,更多List,Set,Queue要去看源码的时候,掌握现有知识点,源码...
这次说说多线程只是扩展,主要讲解一些应用,应用带一些原理讲解,同时希望各位老铁有所收获,这些内容跟前面的线程和并发容器有关系的,从应用场景引出多线程技术栈里面的应用,其实锁和...
上文说了HashMap,其实HashMap是线程非安全的,JDK里面有个线程安全的就是HashTable,查看HashTable每个方法都增加了synchronized同步锁...
今天一起说说并发容器类,实际上还是JDK代码里面的东西,其实不管是Map或者ConcurrentMap,网上太多的资料了,其实有些资料也是从网上找的,但是加入了自己的理解,更...
上次主要说的就是锁,锁的应用,梳理了锁的原理,其实你会发现,没有太多技巧性的内容点,这个不容易看明白,先明白原理在看代码。这个更方便理解。学习的过程就是:采坑,入坑,回头看看...
上节讲了线程安全和原子性,其实就是并发代码变成同步,意味这代码只有一个人在使用,这样就不会有问题。 (一)Java中的锁 1.自旋锁 为了不放弃CPU执行时间,循环的使用CA...
上次主要说了一个结论就是volatile,线程安全可见性的问题,大部分情况下可见性都不需要管理的,但是多线程编程的代码中,我们会使用到volatile关键字,通过volati...
上次线程池已经说过了,从今天开始一起了解下JVM内存模型详解。 (一)容易误解的部分 老铁很容易把JAVA的内存区域、JAVA的内存模型,GC分代回收的老年代和新生代也容易搞...
上节说了线程的闭包,通过局部变量或者是ThreadLocal的方式,完成了闭包了操作,这次一起说说线程的线程池原理。 (一)为什么要用线程池 ① 线程是不是越多越好 1.不一...
上次说了Java通信的几种方式,suspend / resume,wait/notify,park/unpark,这次说说线程封闭。 (一)线程封闭概念 ① 引言 多线程访问...
上节说了CPU缓存和内存屏障,CPU厂家考虑到指令重排的一些解决方案吧,本次说说线程通信,多个线程运行期间,它们之间进行数据交互和协作。 (一)通信的方式 ①介绍 多要实现多...
上节说了线程中止,优雅和暴力的方式,也说到了通过标志位的方式,这次一起说说CPU缓存和内存屏障。 (一)CPU性能优化手段 ① 缓存 为了提高程序运行的性能,CPU已经i7 ...
上次说了线程的6种状态,这次说说如何中止一个正在运行的线程。 (一)不正确的线程终止 - Stop ① stop 中止线程,并且清楚监控锁的信息,但是可能导致线程安全问题,J...
上次进行了JAVA程序运行的原理分析,通过【JVM指令代码表】可以一步步,了解栈本地变量表和操作数栈,在栈线程中程序是如何运行的,这次咱们一起梳理下JAVA的线程状态。 (一...
作为JAVA的开发人员,需要知道JAVA是如何运行的,这个需要好好思考下。 (一)class文件内容 class文件包含JAVA程序执行的字节码,也就是说程序的执行是通过cl...