12 2022 档案
摘要:一、insert调优 1、插入多条数据时最好批量插入 (但一般不超过一千条) 2、手动提交事务,多条语句一起提交 start transaction; insert into table values (),(),(); insert into table values (),(),(); inse
阅读全文
摘要:重拾mysql,记点新知识 1、关于外键约束,项目中一直少用外键约束,是怕删除的时候删除不掉,原来是可以设置的,关于外键约束有四种更新行为 NO ACTION:当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新、删除。(与RESTRICT一致) RESTRICT:当在父
阅读全文
摘要:AbstractQueuedSynchronizer 抽象的队列同步器 AQS是volatile+CAS机制实现的锁模板,保证了代码的同步性和可见性。AQS定义了一套多线程访问共享资源的同步器框架,封装了线程阻塞等待挂起,解锁其他线程的逻辑, AQS子类只需要根据状态变量,判断是否可获取锁,是否释放
阅读全文
摘要:ReentrantReadWriteLock 读写锁 定义:一个资源能够被多个读线程访问,或者被一个写线程访问,但是不能同时存在读写线程,只有在读多写少的情况下,读写锁才有较高的性能体现。 缺点: 1、写锁饥饿问题,如果读锁特别多,写锁特别少,会导致写锁抢不到资源 2、锁降级 锁降级:如果一个线程持
阅读全文
摘要:Future Future接口提供了异步并行计算的功能,可以为主线程开一个分支任务,专门为主线程处理耗时和费力的复杂任务。 (FutureTask)实现类满足三个特点,1,多线程 2,有返回 3,异步任务 Future(FutureTask) 优缺点 优点:future+线程池异步多线程任务配合,能
阅读全文
摘要:三种锁的优缺点对比 偏向锁的几个特点: 1、撤销偏向需要将持锁线程升级为轻量级锁,这个过程中所有线程需要暂停(STW) 2、偏向锁的对象头会记录当前线程的id 3、访问对象的hashcode也会撤销偏向锁,因为hashcode存在对象头中,占用了储存当前偏向线程id的位置 4、如果对象被多个线程访问
阅读全文
摘要:手写自旋锁 public class SpinLockDemo { AtomicReference<Thread> atomicReference = new AtomicReference<>(); public void lock(){ Thread thread = Thread.curren
阅读全文