
并发编程知识落地
文章平均质量分 92
通过搭建多线程并发的各种demo,逐步深入并发编程的问题,结合书本知识完善Concurrency实际场景的优化思路。
纸上得来终觉浅
竹天九日
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于DeadLock(死锁)的总结及Java代码实现
本篇文章演示死锁的场景,在现实中你可能不会写出这样的代码。但是,在一些更为 复杂的场景中,你可能会遇到这样的问题,比如t1拿到锁之后,因为一些异常情况没有释放锁 (死循环)。又或者是t1拿到一个数据库锁,释放锁的时候抛出了异常,没释放掉。一旦出现死锁,业务是可感知的,因为不能继续提供服务了,那么只能通过dump线程查看 到底是哪个线程出现了问题,以下线程信息告诉我们是DeadLockDemo类的第42行和第31行引 起的死锁1.创建t1和t2两个线程,互相加锁public class NormalLo原创 2020-05-18 16:17:59 · 743 阅读 · 0 评论 -
分布式系统中的消息队列传递
1.消息队列在分布式系统架构中,消息队列的核心职责是为不同的应用系统提供异步通信服务,通常涉及以下三个重要角色:• 消息发布者,发送消息的应用系统,负责创建消息对象并通过网络发布到消息Broker,发布的过程一般是同步的。• 消息Broker,异步消息的“代理人”,负责接收并持久化消息,保证将消息投递到指定的消息订阅者应用系统。• 消息订阅者,订阅消息的应用系统,负责消费消息Broker投递过来的消息。异步消息队列“账单服务” 处理 “账单查询Case” 的耗时由 60 ms 缩减至 13原创 2020-06-25 21:10:43 · 871 阅读 · 1 评论 -
操作系统之进程调度与内存管理
1.进程间的通信与调度1.1进程间的通信(Inter Process Communication)生产者消费者问题数据存到有界缓冲区bounded-buffer中,设置count记录缓冲区的数据量,如果缓冲区满count=size,让生产者睡眠;如果缓冲区为空count=0,让消费者睡眠。解决方法:(1)用信号量(semaphore)需要三个信号量:full记录充满缓冲区数目,empty记录空的缓冲区数目。mutex用来保证任意时刻只有一个进程读写缓冲区变量。(2)用互.原创 2020-06-14 22:47:49 · 1763 阅读 · 0 评论 -
Java内存溢出的典型场景测试
引言:本文是阅读经典的《深入理解Java虚拟机》后,对第二章的内存溢出异常情况进行总结,通过实际代码实现来验证知识点的正确性。1.堆内存溢出Java的堆用于存储对象实例,只要不断地创建对象,并且保证GC root 到对象之间有可达路径,就无法被收集器回收。在java工程的目录下新建一个类,这里命名为MemoryController,代码如下:@RestControllerpublic class MemoryController { private List<TestEntity&g原创 2020-05-29 14:32:21 · 567 阅读 · 0 评论 -
ThreadLocal的原理,特点和使用详解
1. ThreadLocal概述1.ThreadLocal提供线程局部变量;开箱即用开销小,可以代替多线程访问共享变量时需要上锁的需要。在各种涉及的多线程语言都有,Java用哈希表表实现(ThreadLocalMap)3.实现原理2. 基本API1.构造函数ThreadLocal()2.初始化 initialValue()只有线程在第一次调用get方法时,执行此方法。3.访问器 get/setpublic T get(),返回ThreadLocal中当前线程副本的值。变量第一次get时原创 2020-05-18 21:04:32 · 3872 阅读 · 0 评论 -
采用jmeter进行抢购商品的压力测试
测试内容疫情物资抢购项目提供了三种解决方案来比较系统性能:1.利用MySQL的update行锁实现悲观锁。2.MySQL加字段version实现乐观锁。3.添加Redis缓存;使用了JMeter在保证错误率为零的基础上,进行压力与性能测试(实验设置的是10秒内产生3000个请求或酌情5000个请求),分析每秒处理请求数、平均响应时间、等参数,最后得出相应结论。测试步骤1.建立线程组...原创 2020-03-17 11:07:49 · 1239 阅读 · 0 评论 -
MySQL中InnoDB事务的默认隔离级别测试
background:通过在数据库建一个简单的蜘蛛侠,蝙蝠侠转账表,来测试InnoDB事务的默认隔离级别事务A:蝙蝠侠(超能力是有钱)给蜘蛛侠转账100;一共是四步组成(1)开始事务A(2)update 蜘蛛侠账户加100(3)update 蝙蝠侠账户减100(4)提交事务A事务B:蜘蛛侠转查自己的账户第一步:开始事务A后执行事务B;结果如下第二步:update 事务A后执行事...原创 2020-03-08 23:15:02 · 1519 阅读 · 0 评论 -
一文总结Synchronized的各种用法并代码实现
本文主要描述了Synchronized方法的使用场景并用代码实现demo原创 2020-02-28 09:51:31 · 453 阅读 · 0 评论