摘要: synchronized synchronized作用是对类的当前实例(对象)加锁。可以使用synchronized关键字来标记一个方法或者代码块,当某个线程调用该对象的synchronized方法或者访问synchronized代码块时,这个线程便获得了该对象的锁,其他线程暂时无法访问这个方法,只 阅读全文
posted @ 2020-09-28 15:17 蝶花残梦 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 简单的来说CAS适用于写比较少的情况下(多读场景,冲突一般较少),synchronized适用于写比较多的情况下(多写场景,冲突一般较多) 对于资源竞争较少(线程冲突较轻)的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源;而CAS基于 阅读全文
posted @ 2020-09-28 15:08 蝶花残梦 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 1 ABA 问题 如果一个变量V初次读取的时候是A值,并且在准备赋值的时候检查到它仍然是A值,那我们就能说明它的值没有被其他线程修改过了吗?很明显是不能的,因为在这段时间它的值可能被改为其他值,然后又改回A,那CAS操作就会误认为它从来没有被修改过。这个问题被称为CAS操作的 "ABA"问题。 JD 阅读全文
posted @ 2020-09-28 15:07 蝶花残梦 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 乐观锁一般会使用版本号机制或CAS算法实现。 1. 版本号机制 一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前数据 阅读全文
posted @ 2020-09-28 15:04 蝶花残梦 阅读(1550) 评论(0) 推荐(0) 编辑
摘要: 乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。 悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它 阅读全文
posted @ 2020-09-28 15:01 蝶花残梦 阅读(137) 评论(0) 推荐(0) 编辑
摘要: JasperReport的基本用法就不多说了,遇到这个问题的都是已经开始测试程序才出现的,这个问题的出现是因为Text Field的Text Adjust属性的默认设置引起的。 Text Adjust属性有三个选择: CutText 超出显示区域的内容不显示 StretchHeight 超出显示的部 阅读全文
posted @ 2020-09-28 13:39 蝶花残梦 阅读(2336) 评论(0) 推荐(0) 编辑
Live2D