Skip to main content

moregeek program

java 中悲观锁的底层实现机制_wx630f055ce23fc的博客-多极客编程

介绍 AQSAQS(AbstractQueuedSynchronizer)是 Java 并发包中,实现各种同步组件的基础。比如各种锁:ReentrantLock、ReadWriteLock、StampedLock各种线程同步工具类:CountDownLatch、CyclicBarrier、Semaphore线程池中的 WorkerLock 接口的实现基本都是通过聚合了一个 AQS 的子类来完成线程

Read More

源码角度了解阻塞队列之synchronousqueue_周杰伦本人的博客-多极客编程

源码角度了解阻塞队列之SynchronousQueue SynchronousQueue是一个同步队列,它没有任何的容量,插入操作都必须等待另一个线程的相应删除操作 从它的构造方法中我们可以看到,可以指定是否为公平的队列,如果是公平的使用队列,如果不是公平的,使用栈来存储 put()方法 public void put(E e) throws InterruptedException {

Read More

源码角度了解阻塞队列之delayqueue_周杰伦本人的博客-多极客编程

源码角度了解阻塞队列之DelayQueue DelayQueue是延迟队列,在延迟到期的时候才能被获取到,按照到期时间从小到大以二叉堆的形式排列,时间最短的在堆顶的位置,它的成员遍历包括一个Condition条件,一个PriorityQueue队列,一个锁,只允许一个线程生产或消费,还有一个记录leader的线程对象。 put()方法 它的put()方法同样也是直接调用了offer()方法,我们看

Read More

【优惠卷秒杀系统设计】秒杀优化 —— 基于阻塞队实现异步秒杀优化 及 基于lua脚本判断秒杀库存、一人一单_perceus.的博客-多极客编程

(目录) 秒杀优化 1、秒杀优化-异步秒杀思路 回顾一下下单流程: 当用户发起请求,此时会请求nginx,nginx会访问到tomcat,而tomcat中的程序,会进行串行操作 分成如下几个步骤: 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是否是一人一单 5、扣减库存 6、创建订单 在这六步操作中,又有很多操作是要去操作数据库的,而且还是一个线程串行执行, 这样就

Read More

源码角度了解阻塞队列之arrayblockingqueue_周杰伦本人的博客-多极客编程

源码角度了解阻塞队列之ArrayBlockingQueue 关于阻塞队列的文章,之前的文章也有所介绍,今天从源码的角度再分析分析,接口是BlockingQueue,它的实现类很多, ArrayBlockingQueue数组实现的环形队列,它定义了队头指针的队尾指针,一个ReentrantLock锁和两个Condition put()方法 它的put方法: public void put(E e)

Read More

源码角度了解阻塞队列之linkedblockingqueue_周杰伦本人的博客-多极客编程

源码角度了解阻塞队列之LinkedBlockingQueue 大家好 我是周杰伦本人 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏 LinkedBlockingQueue是单向链表的阻塞队列,通过它的构造方法可以知道如果不指定容量的话,这个队列的长度Integer类型的最大值,它有两个锁和两个Condition,notEmpty = takeLock.newCondition();这是正在等待获取

Read More

关于线程池,你需要了解这些_浅羽技术的博客-多极客编程

线程池参数 1、 降低资源消耗;提高线程利用率,降低创建和销毁线程的消耗。 2、 提高响应速度;任务来了,直接有线程可用可执行,而不是先创建线程,再执行。 3、 提高线程的可管理性;线程是稀缺资源,使用线程池可以统一分配调优监控。 corePoolSize 代表核心线程数,也就是正常情况下创建工作的线程数,这些线程创建后并不会消除,而是一种常驻线程 maxinumPoolSize 代表的是

Read More

这些并发容器的坑,你要谨记!_华为云开发者社区的博客-多极客编程

摘要:JDK1.5及之后的版本中,提供的线程安全的容器,一般被称为并发容器。与同步容器一样,并发容器在总体上也可以分为四大类,分别为:List、Set、Map和Queue。本文分享自华为云社区《​​【高并发】要想学好并发编程,这些并发容器的坑是你必须要注意的!!(建议收藏)​​》,作者:冰 河 。其实,在JDK1.5之前的线程安全的容器,大多数都是指同步容器,使用同步容器进行并发编程时,最大的问题

Read More

【多线程】模拟阻塞队列,实现生产者消费者模型_perceus的博客-多极客编程

@TOC 生产者消费者模型 什么是阻塞队列 阻塞队列 与 普通队列 的特性一样的:先进先出。但是呢,相比于普通队列,阻塞队列也有着一些其它方面的功能!!!  线程安全  产生阻塞效果   2.1 如果队列为空,尝试出队一个元素,就会触发阻塞,一直阻塞到队列不为空为止。   2.2 如果队列为满,尝试入队一个元素,就会触发阻塞,一直阻塞到队列不为满为止。 基于上述特性,就可以实现“生产者消费者

Read More

分享一个JDK批量异步任务工具CompletionService,超好用-多极客编程

摘要:当需要批量提交异步任务,推荐CompletionService。CompletionService将线程池Executor和阻塞队列融合,让批量异步任务管理更简单。本文分享自华为云社区《​​JDK批量异步任务最强工具CompletionService​​》,作者: JavaEdge。如何优化一个查询各个价格接口的代码?若使用“ThreadPoolExecutor+Future”,可能优化如下

Read More

线程池中的阻塞队列有哪几种?-多极客编程

线程池中的阻塞队列有哪几种? 阻塞队列用于保存等待执行的任务。当任务的数量超过 corePoolSize 数量,后续的任务将会进入阻塞队列,阻塞排队。 有以下几种阻塞队列: ArrayBlockingQueue 是一个基于数组结构的有界阻塞队列,此队列按 FIFO(先进先出)原则对元素进行排序。 ArrayBlockingQueue是一个用数组实现的有界阻塞队列。 队列慢时插入操作被阻塞,队列空

Read More