上一页 1 ··· 85 86 87 88 89 90 91 92 93 ··· 99 下一页
摘要: 解析锁——悲观|乐观锁、自旋|互斥锁、公平|非公平锁悲观锁总认为最坏的情况可能会出现,即认为数据很可能会被他人修改,因此在持有数据时总是先把资源或数据锁住。这样其他线程要请求这个资源时就会阻塞,直到悲观锁释放资源。关系型数据库中应用比较广泛,如行锁、表锁、读锁、写锁等都是在操作前先上锁。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) 编辑
摘要: 1.控制并发线程数的Semaphore Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,保证合理的使用公共资源。 线程可以通过acquire()方法来获取信号量的许可,当信号量中没有可用的许可的时候,线程阻塞,直到有可用的许可为止。线程可以通过release() 阅读全文
posted @ 2021-06-17 23:03 hanease 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 1.CyclicBarrier 字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时候,屏障才会开门。所有被屏障拦截的线程才会运行。 2.常用的方法: CyclicBarrier(int parties) 创 阅读全文
posted @ 2021-06-17 23:02 hanease 阅读(376) 评论(0) 推荐(0) 编辑
上一页 1 ··· 85 86 87 88 89 90 91 92 93 ··· 99 下一页