![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发
文章平均质量分 72
卡梅丽多
但愿人长久,千里共婵娟
展开
-
反应式框架Reactor中的Mono和Flux
Reactive基于事件驱动(事件模式或者说订阅者模式),类似于Netty异步事件编程模型,对不同的事件做不同的处理。所有信息都通过一个编程模型处理,就像水在管道里面运动一样(这里把事件比作水流)响应流必须是无阻塞的。 响应流必须是一个数据流。 它必须可以异步执行。 并且它也应该能够处理背压。背压是反应流中的一个重要概念,可以理解为,生产者可以感受到消费者反馈的消费压力,并根据压力进行动态调整生产速率。反应式编程框架主要采用了观察者模式,而Spring Reactor的核心则是对观察者模原创 2021-11-18 17:18:36 · 4459 阅读 · 0 评论 -
SpringBoot 动态操作定时任务(启动、停止、变更执行周期)
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;import org.springframework.scheduling.support.CronTrigger;import .原创 2021-11-18 14:02:49 · 2164 阅读 · 1 评论 -
同步工具类
CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)就是为了能够更好控制线程之间的通讯问题一、CountDownLatchCountDownLatch是一个同步的辅助类,允许一个或多个线程一直等待,直到其它线程完成它们的操作。它常用的API其实就两个:await()和countDown()count初始化CountDownLatch,然后需要等待的线程调用await方法。await方法会一直受阻塞直到count=0。而其它线程完成自己.原创 2021-11-18 13:51:02 · 363 阅读 · 0 评论 -
@Async注解实现异步任务
我们在使用多线程的时候,往往需要创建Thread类,或者实现Runnable接口,如果要使用到线程池,我们还需要来创建Executors,在使用spring中,已经给我们做了很好的支持。只要要@EnableAsync就可以使用多线程。使用@Async就可以定义一个线程任务。通过spring给我们提供的ThreadPoolTaskExecutor就可以使用线程池。默认情况下,Spring将搜索相关的线程池定义:要么在上下文中搜索唯一的TaskExecutor bean,要么...原创 2021-11-18 13:15:03 · 588 阅读 · 0 评论 -
Netty高并发
Java中,内存分为堆和栈以及字符串常量值等等,要从IO中读取数据,分为两个步骤:(1)从IO流中读取出来放到缓冲区,程序从缓冲区中读取,再放到堆中,此时数据就会被拷贝两次才能到达堆或者堆内存中。如果数据量很大,那么就会造成资源的浪费。(2)Netty其实就是利用NIO中的零拷贝特性,当Netty需要接收数据或者传输数据的时候,就会新开辟一块堆内存,然后数据就直接通过IO读取到了新开辟的堆内存中,这样也就加快了数据传输的速度。阻塞与非阻塞线程在访问某一个资源的时候,该资源是否准备就绪的一种处理方原创 2021-11-18 11:29:05 · 1345 阅读 · 0 评论