摘要: ![](https://img2020.cnblogs.com/blog/1510490/202105/1510490-20210510181503218-1494518451.png) 阅读全文
posted @ 2021-05-10 18:15 zerodseu 阅读(44) 评论(0) 推荐(0) 编辑
摘要: AQS 0 锁的基本原理 首先,需要考虑锁的基本组成元素。 当前锁的状态,是被持有还是未持有状态 如果锁是被持有状态,那么到底是哪个线程持有了当前这把锁 锁必须有一个队列去存储阻塞在该锁或者说在等待持有锁的线程 锁的实现一定需要考虑怎样阻塞线程,将线程放入到等待队列,以及如何在队列中唤醒等待的线程, 阅读全文
posted @ 2020-06-14 01:10 zerodseu 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 1 为什么要有Buffer Pool 如果没有Buffer Pool,所有的操作都是随机IO,每秒钟可以支撑的请求取决于IOPS,最多几百,而且响应时间也会很感人。因此,为了提高MySQL支持的并发数和快速响应,引入了Buffer Pool。 2 Buffer Pool的简单图解 实际上,在对数据库 阅读全文
posted @ 2020-05-31 22:13 zerodseu 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 1 无连接池,服务只有一个数据库连接 此时服务多线程执行SQL语句的时候会争用唯一一个数据库连接,性能差,需要排队 2 无连接池,每个线程创建一个数据库连接 此时服务多线程执行SQL语句的时候都针对每次SQL执行请求创建一个数据库连接,使用完了需要销毁。由于创建和销毁数据库连接开销大,且可能会耗尽数 阅读全文
posted @ 2020-05-31 19:55 zerodseu 阅读(162) 评论(0) 推荐(0) 编辑
摘要: /* * 当一个任务通过execute(Runnable)提交后,假设当前运行的线程数目 = running_thread_num * * 增加工作线程以及放入队列的策略 * ① if running_thread_num < corePoolSize * 即使其他线程都是idle的,也会创建一个新 阅读全文
posted @ 2020-05-29 22:18 zerodseu 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 最近看了下Java线程池的源码,ExecutorService里面关于shutdown和shutdownNow的注释不太能理解啥意思。 直接翻译字面意思是,开启一个有序的关闭,先前提交的任务会被执行,但不接受新任务。如果已关闭,则调用不会产生任何其他影响。但是这个方法不会等待已提交任务完成执行。 这 阅读全文
posted @ 2020-05-23 18:38 zerodseu 阅读(2267) 评论(0) 推荐(0) 编辑
摘要: 1 使用包名,则Alias默认为对象简单类名,其中第一个字母替换为小写 注释:这里的TDemoDO别名默认为tDemoDO 2 使用全限定类名,xml中配置Alias 3 使用全限定类名 + @Alias 4 使用package + @Alias 总结 : 个人觉得使用package + Alias 阅读全文
posted @ 2020-05-22 19:05 zerodseu 阅读(1357) 评论(0) 推荐(0) 编辑
摘要: 1 针对未提交事务的刷盘策略 No Steal和Steal No Steal:未提交的事务数据页不可以写入磁盘 Steal:未提交的事务数据页可以写入磁盘 2 针对提交事务的刷盘策略 No Force和Force No Force:提交的事务数据页必须写入磁盘 Force:提交的事务数据页也可以不写 阅读全文
posted @ 2020-05-14 23:41 zerodseu 阅读(1339) 评论(0) 推荐(0) 编辑
摘要: ```javaimport java.util.concurrent.atomic.AtomicInteger;/** * @author zerodsLyn * created on 2020/5/10 */public class MultiThreadSerialPrint { private final Thread[] threads; /** * 打印线程数目 ... 阅读全文
posted @ 2020-05-10 18:33 zerodseu 阅读(229) 评论(0) 推荐(0) 编辑
摘要: Java的Object.wait(long)在等待时间过去后会继续往后执行吗 Object.wait(long)方法相比于wait,多了个等待时长,那么当等待时长过去后,线程会继续往下执行吗? 1. 单个线程执行 2. 多个线程并发执行 第一种情况下,运行结果 t1: I am in t1: I a 阅读全文
posted @ 2020-05-08 20:34 zerodseu 阅读(965) 评论(0) 推荐(0) 编辑