08 2024 档案
摘要:不可见性问题示例1 public class Test { // 加 volatile 就能解决 public static Integer flag = 1; public static void main(String[] args) { // 线程 A 死循环,当 a == 1 时不会停止,当
阅读全文
摘要:用法 同步方法 public synchronized void instanceMethod() { // 锁是当前实例对象(调用哪个对象的这个方法,哪个对象就是锁对象) } public static synchronized void staticMethod() { // 锁是当前类的 Cl
阅读全文
摘要:乐观锁、悲观锁 这不是一种具体的锁,是一个概念,可以认为所有的锁都是悲观或乐观的,java 中绝大部分锁都是悲观锁(synchronized、ReentrantLock等);也有乐观锁(原子类的递增、读写锁的读锁),java 的乐观锁都是 CAS 实现的 悲观锁 每次线程对资源做任何操作都要先获取锁
阅读全文
摘要:sqlSession.getMapper() 获取到的是 Mapper 接口的代理对象。这个代理对象是由 MyBatis 通过 JDK 动态代理 生成的,核心类是 MapperProxy。 1 sqlSession.getMapper() 的源码分析 sqlSession.getMapper() 是
阅读全文
摘要:安装 卸载老版本(如果有) yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \
阅读全文
摘要:线程不安全示例 public class UnsafeTicketSeller { // 总票数 private int tickets = 10; // 售票方法 public void sellTicket() { // 检查是否还有票 if (tickets > 0) { // 模拟处理时间
阅读全文
摘要:生命周期 创建线程 实现 Runnable 接口 class MyRunnable implements Runnable { public void run() { // ... } } public static void main(String[] args) { MyRunnable ins
阅读全文