Loading

摘要: 高并发模拟测试工具 postman apache bench(AB) JMeter (1) 使用postman创建并发模拟测试 据说这种方式的并发测试看看就行了, 没用, 使用的是串行不是并发 填入并发和延迟, 基本完成了 (2) apache bench(ab) 需要安装apache 通过上面的方 阅读全文
posted @ 2020-06-26 17:46 bangiao 阅读(161) 评论(0) 推荐(0) 编辑
摘要: J.U.C AQS 原理 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取 锁和释放锁 getState - 获取 state 状态 se 阅读全文
posted @ 2020-06-26 17:44 bangiao 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 线程池 自定义线程池 import java.util.ArrayDeque; import java.util.Deque; import java.util.HashSet; import java.util.concurrent.TimeUnit; import java.util.concu 阅读全文
posted @ 2020-06-26 17:43 bangiao 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 线程安全 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的 Brian Goetz 多线程安全问题是什么? 问题: 多线程在修改共享资源的时 阅读全文
posted @ 2020-06-26 17:42 bangiao 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 无锁 乐观锁(非阻塞) 共享模式之无锁 CAS 与 volatile 原子整数 原子引用 原子累加器 Unsafe CAS无锁方案 CAS无锁主要看重三个变量: 预估值 + 修改值 + 主存值 预估值: 主要用来判断是否等于主存值, 是则将修改值修改到主存值中 修改值: 即将需要修改的新值, 修改到 阅读全文
posted @ 2020-06-26 17:40 bangiao 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 管程 悲观锁(阻塞) 临界区 一段代码块对共享资源存在多个线程的读写操作, 我们就叫它临界区 临界区存在多个线程竞争共享资源的问题, 由于分时系统, 我们的cpu不能一直负责一条线程的执行, 所以在cpu切换的时候需要保存当时的场景, 之后cpu回来后需要恢复场景再次执行代码, 我们简称这个过程为线 阅读全文
posted @ 2020-06-26 17:39 bangiao 阅读(500) 评论(0) 推荐(0) 编辑
摘要: CPU 缓存结构原理 CPU 缓存结构 查看 cpu 缓存 速度比较 查看 cpu 缓存行 cpu 拿到的内存地址格式是这样的 CPU 缓存读 根据低位,计算在缓存中的索引 判断是否有效 0 去内存读取新数据更新缓存行 1 再对比高位组标记是否一致 一致,根据偏移量返回缓存数据 不一致,去内存读取新 阅读全文
posted @ 2020-06-26 17:37 bangiao 阅读(947) 评论(0) 推荐(0) 编辑
摘要: Java与协程 内核线程的局限 通过一个具体场景来解释目前Java线程面临的困境。今天对Web应用的服务要求,不论是在请求数量上还是在复杂度上,与十多年前相比已不可同日而语,这一方面是源于业务量的增长,另一方面来自于为了应对业务复杂化而不断进行的服务细分。现代B/S系统中一次对外部业务请求的响应,往 阅读全文
posted @ 2020-06-26 17:34 bangiao 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 目录 01.Java和线程 02.Java与协程 03.CPU缓存结构和java内存模型 04.管程-悲观锁和锁优化 05.乐观锁 - 无锁方案 06.线程安全 07.线程池 08.JUC 09.高并发测试 10.类加载器 Java与线程 线程的类型 线程是比进程更轻量级的调度执行单位,线程的引入, 阅读全文
posted @ 2020-06-26 17:33 bangiao 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 为什么需要编译自己的jvm源码? 想象下, 你想看看java线程是如何start的? 去源码里一找 native void start0(), 此时如果你对jvm源码比较熟悉, 那么可以下载openJDK源码借助vscode去查询底层实现, 但如果你不知道呢? 又比如 java高并发编程艺术 一书中 阅读全文
posted @ 2020-06-26 17:30 bangiao 阅读(1166) 评论(0) 推荐(0) 编辑