在mybatis3的源码里,涉及到了许多一级缓存二级缓存的点,其中mybatis的开发者们专门下设了cache包来存放一些关于缓存的类,使用到的是装饰器模式开发了不同功能的缓存:
其中在BlockingCache类涉及到了很多并发编程的内容:
之前的源码中的map的值是ReentrantLock
该类实现了cache接口的getObject方法,该方法如下:
该方法的acquireLock和releaseLock是核心:
可以很清晰看见加锁和释放锁的逻辑。
在mybatis3的源码里,涉及到了许多一级缓存二级缓存的点,其中mybatis的开发者们专门下设了cache包来存放一些关于缓存的类,使用到的是装饰器模式开发了不同功能的缓存:
其中在BlockingCache类涉及到了很多并发编程的内容:
之前的源码中的map的值是ReentrantLock
该类实现了cache接口的getObject方法,该方法如下:
该方法的acquireLock和releaseLock是核心:
可以很清晰看见加锁和释放锁的逻辑。