摘要: AQS全称AbstractQueuedSynchronizer,是一个抽象类的缩写,在jdk的java.util.concurrent.locks包里面 语义可以理解为基于先进先出的队列结构的同步框架,队列是基于双向链表实现的。 AbstractQueuedSynchronizer抽象类主要是针对队 阅读全文
posted @ 2021-11-17 23:10 whltw 阅读(86) 评论(0) 推荐(0)
摘要: 乐观锁:乐观锁认为并不会产生并发问题。认为在读取数据之后,该数据并不会被其他线程修改,在进行真正更新的时候会去检查是有其他线程修改了这个数据,一般可以用版本号或cas操作来控制 悲观锁:悲观锁认为每次读取数据都是会有其他线程会对当前数据进行修改,所以在读取数据的时候会进行加锁处理,当有其他线程来修改 阅读全文
posted @ 2021-11-15 19:58 whltw 阅读(135) 评论(0) 推荐(0)
摘要: sychronized底层是基于mutex(互斥锁)的lock。sychrnozied并不是根据线程来获取锁的先后顺序来分配锁的,而是等待的线程都是先有机会获取锁的。这样做的目的是为提高性能,缺点则是可能会产生饥饿现象(某个线程一直得到锁) 阅读全文
posted @ 2021-11-15 19:40 whltw 阅读(80) 评论(0) 推荐(0)
摘要: jvm对锁(sychornized)的优化开始于jdk1.6。优化的方面主要技术包括:自旋锁、自适应自旋锁、偏向锁、锁销除、锁粗话,轻量级锁,重量级锁 1自旋锁:在锁争用不多、锁占用时间比较少的情况下,自旋锁让线程去循环获取锁,这比线程阻塞性能更好(包括挂起或唤醒)。自旋锁默认自旋的次数是10次,可 阅读全文
posted @ 2021-11-13 23:55 whltw 阅读(274) 评论(0) 推荐(0)
摘要: 想必在最开始的时候都经历过为啥String 对象明明设置的字符串一样用== 的时候不一定会相等,用equals方法就会相等;用同一个实体类new出两个属性值相等的对象,hashCode值不一样等等。 其实对上述有疑问还是java的基础知识没有掌握牢固。 我们来拿HashMap来做说明 首先HashM 阅读全文
posted @ 2021-11-12 00:12 whltw 阅读(60) 评论(0) 推荐(0)
摘要: 简介 在实际的开发中,单元测试是不可避免的一环。很多时候针对复杂的类依赖和调用关系的场景(某个方法可能会层层调用其他类的方法,且逻辑复杂),造数据去测这种场景的代码,是非常难受且难以全覆盖的。针对这样的问题,mockito的工具可以很好的解决。mockito工具可以只针对测试你当前测试的方法的主要平 阅读全文
posted @ 2021-10-15 18:20 whltw 阅读(798) 评论(0) 推荐(0)