
并发编程
天蓝色的风
从入门到放弃!
展开
-
基于redisson实现延迟队列功能实战
背景: 最近有个需求是跟第三方对接事故报案,事故报案单状态是由kafka来实现发布订阅的。具体是这样的,事故报案双方都可以发起,如果是第三方发起的事故报案,我们接到kafka推送的状态后,需要创建一张事故报案单,如果是我们发起的事故报案,第三方也需要创建一张事故报案单。因为我们创建事故报案单后,还有后续流程要走,导致当消费该报案单第一个状态的时候,事故报案单还没有创建完成,其结果就是该消息没有被成功消费,导致事故报案单缺少了第一个状态节点。因为状态消息实时性要求不高,所以我们决定用延时队列来解决这个问题。同原创 2020-12-24 11:26:13 · 2268 阅读 · 4 评论 -
java多线程总结:原理结合源码详细讲解
执行策略:线程执行的方式 串行执行 比如:医院给病人看病的时候,可以让所有的病人都拍成一个队形,让一个医生统一的看病。医生:线程。病人看病:任务 这种一个医生给一群站好队形的病人看病--映射到java就相当于:单线程串行执行任务 映射到我们java中的话就相当于线程执行任务。 串行执行的缺点很明显。 例如:...转载 2019-12-17 12:25:18 · 293 阅读 · 2 评论 -
java CAS算法实现乐观锁 (Compare and Swap)
在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。 CAS: CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失...转载 2019-12-17 14:27:34 · 216 阅读 · 0 评论 -
Java中Volatile关键字详解
阅读目录一、基本概念二、Volatile原理 一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性...转载 2019-12-19 11:35:28 · 159 阅读 · 0 评论 -
spring异步任务@Async 结合线程池使用的源码理解
最近在做重构,业务实现需要用到异步操作。随即在网上看了些关于spring异步操作的文章,最后决定用异步注解@Async结合线程池的方式来实现。 关于异步注解的使用以及注意事项在此不再详述,具体可参考: 1. spring @Async异步方法使用及原理说明 2. Spring异步任务@Async注解源码解析 我们重点关注 AsyncExecutionInterceptor 类下的 invoke方法...原创 2020-03-27 17:16:16 · 552 阅读 · 0 评论