Java并发
文章平均质量分 55
huskyui
如果不想被动,那就主动一点
展开
-
线程池使用案例一
前题刚入职的公司,要求接口压测要通过,发现在业务中需要接口需要使用多线程的使用,由于入参动态输入会员id数组,我们需要创建数组size的线程数,来请求db(其实应该用一个sql来写的,但是公司分片数据库不支持)。需求:多线程中,每个线程执行的时间都不能超过一个固定值,如果返回不了,可丢弃方案一使用CompletableFuture的allOf join 来实现,但又缺点,我们需要在规定时间200ms内获取所有Future的结果,但是好像这样的代码并不适合// multiple task原创 2021-06-19 00:38:37 · 371 阅读 · 0 评论 -
AsyncEventBus在Spring中的应用,处理异步任务
前言最近在看线程池,就全局搜了之前公司代码,关键字 Executors,一下子就看见了在使用guava的AysncEventBus,在我使用的感觉来就是单个jvm里面的异步执行框架。它并没有每次都让我们显式让我们直接调用线程池的执行任务,而是帮助我们有封装了一层。简单案例package org.example.eventbus;/** * @author huskyui */public class EventBusDemo { public static void main原创 2021-05-08 01:19:17 · 826 阅读 · 2 评论 -
CountDownLatch和CyclicBarrier分析
CountDownLatch几个经常用的方法分析CountDownLatch构造函数 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); //此处调用CountDownLatch的队...原创 2019-10-16 15:35:52 · 108 阅读 · 0 评论 -
读写锁
readWriteLock读写锁也就是共享-独占锁,读锁之间可以共享锁,但是读锁和写锁之间不可以共享,写锁之间也不可共享.学习的这个读写锁的设计,它的核心是1.多个线程(读锁,写锁)都是用同一个对象锁,然后用sychronized来唤醒全部以及沉睡.2.定义了读锁数量变量,当前写锁数量,当前等待写锁数量来是否需要睡眠和唤醒lock接口/** * 读写锁的内涵就是共享-独占锁...原创 2019-09-02 14:29:08 · 146 阅读 · 0 评论 -
volatile关键字
内存,cache,和寄存器之间的关系寄存器是用于计算数据,而cpu所能访问的数据都是主存中的.寄存器速度随时代行长越来越快,但是读取数据却是没有太大发展.所以有了cache这样的东西高并发三大特性原子性多个原子性操作在一起就不再是原子性操作了简单的读取和赋值操作是原子性的,将一个变量赋给另外一个变量的操作不是原子性的.Java内存模型(JMM)只保证了基本读取和赋值的原子性操作,其...原创 2019-08-21 18:34:08 · 127 阅读 · 0 评论 -
线程通信
线程间通信线程间通信会有一个存储任务的队列,队列有以下三种状况队列为空,会通知消费者等待,队列满时,会通知生产者等待队列有任务但不为空,消费者正常运行,生产者正常运行单线程通信(一个生产者一个消费者)使用Object中的方法,wait()和notify()来实现wait()wait()和notify()必须获取对象,所以两个方法都需要在同步方法中使用(synchroi...原创 2019-07-16 18:24:44 · 142 阅读 · 0 评论 -
关闭线程
关闭线程通过interruptionException关闭import java.util.concurrent.TimeUnit;/** * @author husky * @date 2019/7/11 11:23 */public class CloseThreadByInterruptException { public static void main(Strin...原创 2019-07-12 17:27:41 · 264 阅读 · 0 评论 -
interrupt
interrupt首先梳理Thread关于interrupt的定义/** * Interrupts this thread. * * <p> Unless the current thread is interrupting itself, which is * always permitted, the {@link #checkAccess() checkAccess}...原创 2019-04-29 22:43:21 · 827 阅读 · 0 评论 -
队列同步器-AbstractQueuedSynchronizer
同步器依赖内部的同步队列(一个FIFO双向队列),来完成同步状态的管理,当前线程获取同步状态失败时,同步器会将当前线程以及等待信息放入到一个节点Node并将其加入同步队列,同时会阻塞当前线程,但同步状态释放时,会将首节点的线程唤醒,使其产生获取同步状态.同步队列的节点(Node)用来保存获取同步状态失败的线程引用,等待状态以及前驱和后驱节点,结点的属性类型与名称以及描述.static fina...原创 2019-09-26 17:24:23 · 131 阅读 · 0 评论