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