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