摘要: 前一段时间,我们在了解了synchronized之后,我们在来看ReentrantLock。 1 private Lock lock = new ReentrantLock(); 2 public void test(){ 3 lock.lock(); 4 try{ 5 //doSomeThing( 阅读全文
posted @ 2017-11-28 15:26 小杨ABC 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 在消费者一端采用异步处理数据,但是从队列里面拉取出来的数据有一些会是重复的,所以在异步处理中,需要有一个节点来控制重复插入数据的问题,想到同步序列处理,必然是使用到锁的概念。一般情况下使用Lock来锁住一个代码块,使达到并行到串行的效果,但是去重复的效果达不到,其实重复的数据在数据库insert的时 阅读全文
posted @ 2017-11-13 10:21 小杨ABC 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 前言 想象这样一个场景,线上某个服务突发异常,导致上游服务调用异常,数据处于中间状态。服务恢复之后,我们需要修复这笔数据至正常状态,怎么办? 如果仅是简单的服务,涉及少量数据变更,我们可以直接使用 SQL,变更数据状态。但是有些情况下,服务需要联动调用其他系统,变更其他系统数据。这种情况下,变更数据 阅读全文
posted @ 2017-10-30 14:37 小杨ABC 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 背景 前几天订单处理逻辑里面有个配置里面有个地方添加了一个配置项目,默认对象的一个属性配置了一个默认值是False,然后更具逻辑判断修改。因为一直说Spring的Bean默认是单例的,所以这里我就默认给自己埋了一个坑,如果这里是单例的,当第一次初始化好Bean之后,如果有一个线程过来修改了这个bea 阅读全文
posted @ 2017-09-30 10:17 小杨ABC 阅读(2465) 评论(0) 推荐(1) 编辑
摘要: 概念 相对于之前我们提到的Mutex和ReentrantLock基本都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他 阅读全文
posted @ 2017-09-19 21:57 小杨ABC 阅读(5286) 评论(0) 推荐(1) 编辑
摘要: 概念 队列同步器AbstractQueuedSynchronizer,也就是我们经常说的AQS,他是java并发工具包里面的一个对象,我们在使用lock的实现类的时候,会经常看到他的身影。大多都是使用它来构建锁或者其他同步组件的基础框架,他使用一个volatile修改的int成员变量来表示同步状态, 阅读全文
posted @ 2017-05-22 15:57 小杨ABC 阅读(1148) 评论(0) 推荐(0) 编辑
摘要: 背景 最近公司的一个同事要离职了,然后老大让我来接手他的工作。看了一段时候他工作的业务文档后,就慢慢开始摸索他的代码了,然后发现了在代码层面上使用大量的Facade类,然后围绕着Facade给外部提供了各种各种的方法,于是很好奇就问他这个Facade到底是用来干嘛的,为什么要弄这个呢,然后它告诉我说 阅读全文
posted @ 2016-11-21 18:03 小杨ABC 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 背景: 最近上线的交易系统已经大面积推广使用了,然后首页商品信息为了加载速度快一些,我把商品都缓存在了redisl里面,这样就避免了总是去查询数据库,本以为这样就可以了,但是在下午高峰期的时候,还是会出现加载缓慢的情况。然后通过log查询,在调用redis的时候有将近200ms的耗时。经过进一步的分 阅读全文
posted @ 2016-09-30 09:58 小杨ABC 阅读(4815) 评论(1) 推荐(1) 编辑
摘要: 背景 最近上线了一套官网的大客户运营系统,其中有个功能是运营人员可以直接通过这个平台给客户下单,生成好的订单,再让高级权限人员审核,我们再通过订单系统接口推送给订单系统进行生成履约等环节。订单接口返回成功,我们会把我们系统的订单状态标记为“生产中”,订单接口返回失败我们标记为“生产失败”。然后在上线 阅读全文
posted @ 2016-08-31 11:06 小杨ABC 阅读(559) 评论(0) 推荐(0) 编辑
摘要: java中将内存的控制交给JVM来实现,在JVM的内存模型中,堆内存是JAVA内存区域中最大的一部分,GC主要就是发生在堆中,用来回收那些无用的对象。我们自己想一想,肯定是没用的对象需要被回收,那么如何判断哪些对象还有用,哪些没用了呢?一个对象被创建,如果被引用了,那这个对象肯定是有用的,如果引用全 阅读全文
posted @ 2016-08-25 13:51 小杨ABC 阅读(264) 评论(0) 推荐(0) 编辑