摘要: 1、相关概念解释 1.1 “内部”和外部 当一个操作是在非ForkjoinThread的线程中进行的,则称该操作为外部操作。比如我们前面执行pool.invoke,invoke内又执行externalPush。由于invoke是在非ForkjoinThread线程中进行的(这里是在main线程中进行 阅读全文
posted @ 2021-06-18 23:16 hanease 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 1、 使用示例import java.lang.reflect.Method; import java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveTask;import java.util.concurrent 阅读全文
posted @ 2021-06-18 23:15 hanease 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 解析锁——悲观|乐观锁、自旋|互斥锁、公平|非公平锁悲观锁总认为最坏的情况可能会出现,即认为数据很可能会被他人修改,因此在持有数据时总是先把资源或数据锁住。这样其他线程要请求这个资源时就会阻塞,直到悲观锁释放资源。关系型数据库中应用比较广泛,如行锁、表锁、读锁、写锁等都是在操作前先上锁。Java中的 阅读全文
posted @ 2021-06-18 23:03 hanease 阅读(111) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal源码深度剖析 ThreadLocal的作用 ThreadLocal的作用是提供线程内的局部变量,说白了,就是在各线程内部创建一个变量的副本,相比于使用各种锁机制访问变量,ThreadLocal的思想就是用空间换时间,使各线程都能访问属于自己这一份的变量副本,变量值不互相干扰,减 阅读全文
posted @ 2021-06-18 22:52 hanease 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 一、概念介绍(一)volatile关键字 Java 因为指令重排序,优化我们的代码,让程序运行更快,也随之带来了多线程下,指令执行顺序的不可控。 1.volatile关键字的作用: 内存可见性,修饰的变量发生改变之后对所有线程立即可见禁止指令重排序volatile的底层是通过内存屏障实现的,第一个作 阅读全文
posted @ 2021-06-18 22:48 hanease 阅读(286) 评论(0) 推荐(1) 编辑
摘要: 关于线程和线程池的学习,我们可以从以下几个方面入手: 第一,什么是线程,线程和进程的区别是什么 第二,线程中的基本概念,线程的生命周期 第三,单线程和多线程 第四,线程池的原理解析 第五,常见的几种线程池的特点以及各自的应用场景 一、 线程,程序执行流的最小执行单位,是行程中的实际运作单位,经常容易 阅读全文
posted @ 2021-06-18 22:32 hanease 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 学习BlockingQueue之LinkedBlockingQueue实现原理 一:概念 LinkedBlockingQueue是一个用链表实现的有界阻塞队列。此队列的默认和最大长度为 Integer.MAX_VALUE。此队列按照先进先出的原则对元素进行排序。 与ArrayBlockingQueu 阅读全文
posted @ 2021-06-18 22:22 hanease 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 生产者-消费者ArrayBlockingQueue是一个实现了BlockingQueue接口的类,其可以很方便的实现生产者-消费者模式。用法如下: class Producer implements Runnable { private final BlockingQueue queue; Prod 阅读全文
posted @ 2021-06-18 22:19 hanease 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 在Java的并发包中,存在着许多高效的并发工具类,它优于synchronized关键字,在JDK中提供了一个ConcurrentLinkedQueue工具类实现了高效的并发读写工具类,该工具类具有很高效的性能,因此,本片文章笔者将通过解读ConcurrentLinkedQueue源码的方式探究该数据 阅读全文
posted @ 2021-06-18 22:11 hanease 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 并发阻塞队列和非阻塞队列详解 在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。 队列遵循先进先出,后进后出的原则。 阻塞式队列与非阻塞队列的区别: 阻塞式 阅读全文
posted @ 2021-06-18 21:55 hanease 阅读(403) 评论(0) 推荐(0) 编辑