摘要: 适用场景 追求吞吐量;同步代码块执行时间较长 概念 当轻量级锁膨胀到重量级锁之后,意味着线程只能被挂起阻塞来等待唤醒了。每个对象中都有一个Monitor监视器,而Monitor依赖操作系统的MuteLock(互斥锁)来实现,线程被阻塞后便进入内核(Linux)调度状态,这个会导致系统在用户态和内核态 阅读全文
posted @ 2021-03-06 14:52 茁壮成长的菜鸡 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 适用场景 一般用于两个线程在交替使用锁的时候,由于没有同时抢锁,属于一种比较和谐的状态,就可以使用轻量级锁 加锁 线程在执行同步代码块之前,JVM会先在当前线程的栈帧中创建用于存储锁记录的空间,并将对象头中的Mark Word复制到锁记录中,官方称为Displaced Mark Word。然后当前线 阅读全文
posted @ 2021-03-06 14:51 茁壮成长的菜鸡 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 锁的存储方式 在HotSpot虚拟机中,对象在内存中的存储布局,可分为三个区域:对象头(header)、实例数据(Instance Data)、对齐填充(Padding)。Synchronize的锁是存在java对象头里。 java对象头例包含两部分信息: 1)Mark Word 用于存储自身的运行 阅读全文
posted @ 2021-03-06 14:49 茁壮成长的菜鸡 阅读(638) 评论(0) 推荐(0) 编辑
摘要: 微服务与分布式事务 分布式事务是随着服务拆分而产生的问题,至于为什么要做服务拆分以及什么是微服务,可以参考下这里 我们知道对于分布式场景而言,肯定是遵循CAP理论的,所以对于这种情况下的事务而言,跨多个服务的调用事务则成了一个令人头疼的点,而Seata则是一个用于解决分布式环境下事务的框架。 Sea 阅读全文
posted @ 2021-03-06 14:43 茁壮成长的菜鸡 阅读(723) 评论(0) 推荐(0) 编辑