- 博客(6)
- 收藏
- 关注
原创 Java-关于多线程可见性的一些问题
1.请列出Happens-before的几种规则 1.单线程happen-before原则:在同一个线程中,书写在前面的操作happen-before后面的操作。 2.锁的happen-before原则:同一个锁的unlock操作happen-before此锁的lock操作。 3.volatile的happen-before原则:对一个volatile变量的的写操作happen-before对此...
2019-05-27 21:05:49 259
原创 Java---ReentrantReadWriteLock---源码分析
ReentrantReadWriteLock ReadLock readLock:时序图 readLock:源码分析 tryAcquiredShared(int unused) protected final int tryAcquireShared(int unused) { Thread current = Thread.currentThread(); // c为...
2019-05-27 20:34:40 250
原创 Java_ReentrantLock_重入锁之非公平锁NonfairSync源码分析
1.以非公平锁为例,来看看 lock 中的实现 1. 非公平锁和公平锁最大的区别在于,在非公平锁中我抢占锁的逻辑是,不管有没有线程排队,我先上来 cas 去抢占一下 2. CAS 成功,就表示成功获得了锁 3. CAS 失败,调用 acquire(1)走锁竞争逻辑 1.1让我们先来了解一下CAS的原理 首先我们需要明白一点:锁拥有一个共享的数据来记录其基本状态(无锁/有锁 状态)-...
2019-05-24 22:00:21 309
原创 Java-进阶之问题记录
1.Java什么时候用重载,什么时候用重写? 重载是多样性,重写是增强剂。 Java中的重载overload最重要且最常用的应用场景是构造器的重载,构造器重载后,提供多种参数形式的构造器,可以应对不同的业务需求,加强程序的健壮性和可扩展性。比如Spring源码中的ClassPathXmlApplicationContext,他的构造函数使用重载一共提供了10个构造函数,这样...
2019-05-14 21:22:02 151
原创 MyBatis 体系结构与工作原理-update流程时序图
目录 update流程时序图 创建会话工厂类 创建会话 获取代理对象 调用代理对象方法,执行SQL update流程时序图 创建会话工厂类 创建会话 获取代理对象 调用代理对象方法,执行SQL MyBatis里面用到了那些设计模式? 建造者模式 SqlSessionBuilder 工厂模式和单例模式 ...
2019-05-04 00:18:06 420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人