03 2020 档案
SpringMVC原理
摘要:源码在DispatcherServlet,初始化方法onRefresh,执行具体逻辑方法即执行Controller里的具体方法的源码是doService方法 阅读全文
posted @ 2020-03-31 21:08 柳无情 阅读(103) 评论(0) 推荐(0)
ReentrantLock之原理解析三
摘要:非公平锁与公平锁解锁 唤醒挂起的线程,将state设置无锁即为0.注:如果多次获取相同的锁,就必须释放多少次。 /** * Attempts to release this lock. * * <p>If the current thread is the holder of this lock t 阅读全文
posted @ 2020-03-26 21:24 柳无情 阅读(192) 评论(0) 推荐(0)
ReentrantLock之原理解析二
摘要:非公平锁加锁 · 1)当前线程能加锁,设置当前持有锁的线程为当前线程;否则会再次获取锁,获取不成功加入等待队列 /** * Performs lock. Try immediate barge, backing up to normal * acquire on failure. */ final 阅读全文
posted @ 2020-03-26 21:21 柳无情 阅读(234) 评论(0) 推荐(0)
ReentrantLock之原理解析一
摘要:原理与概念 1.ReentrantLock原理:多个线程获取锁,一个线程获取到锁,其他线程排队等待锁,并挂起;当获取到锁这个节点释放锁,就会唤醒队伍的头结点。 2.ReentrantLock是个可重入锁,支持公平锁和非公平锁。ReentrantLock默认使用非公平锁,看源码可知。 /** * Cr 阅读全文
posted @ 2020-03-26 21:20 柳无情 阅读(2324) 评论(0) 推荐(0)
为什么多线程共享变量不能用HashMap、ArrayList、TreeSet等类
摘要:并发产生的原因浅析 变量的值是放在堆中,堆又是所有线程共享的,每个线程都有自己的工作内存,每次修改内存的值会从主内存中变量的值加载到自己的工作内存中,修改完把工作内存的值写回主内存。这个机制就导致程序无法按人的逻辑执行得出正确结果,因为你无法得知内存的值到底是几。 以HashMap为例: 全局变量 阅读全文
posted @ 2020-03-12 23:09 柳无情 阅读(634) 评论(0) 推荐(0)