摘要: 公平锁和非公平锁区别 公平锁:大家老老实实排队,先来后到,等待队列按照FIFO规则获取锁。 非公平锁:抢占资源,多线程获取锁的顺序不按照申请锁的顺序;在高并发情况下,有可能会造成优先级反转或饥饿现象;优点在于性能比公平锁大。 如何得到公平/非公平锁? 并发包中ReentrantLock的创建可以指定 阅读全文
posted @ 2019-09-03 14:12 要好好吃饭 阅读(277) 评论(0) 推荐(0) 编辑
摘要: HashSet和ArrayList一样,底层原理一样,也是线程不安全 CopyOnWriteArraySet底层还是用的CopyOnWriteArrayList new HashSet()的底层数据是什么? HashSet的底层数据结构就是HashMap;初始容量16 /** * Construct 阅读全文
posted @ 2019-09-03 12:23 要好好吃饭 阅读(134) 评论(0) 推荐(0) 编辑
摘要: fail-fast 机制 即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentModificationException异常。fail-fast机制并不保证在不同步的 阅读全文
posted @ 2019-09-02 20:22 要好好吃饭 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 一、实现原理 增强for循环是JAVA提供的语法糖 for (Integer i : list) { System.out.println(i); } 反编译后: Integer i; for(Iterator iterator = list.iterator(); iterator.hasNext 阅读全文
posted @ 2019-09-02 18:50 要好好吃饭 阅读(665) 评论(0) 推荐(0) 编辑
摘要: 一、为什么ArrayList线程不安全 为什么说ArrayList是线程不安全的 浅谈ArrayList动态扩容【代码分析很详细】-ArrayList扩容为原来的1.5倍,Vector是原来的2倍 源码分析-这个类所拥有的部分属性字段 public class ArrayList<E> extend 阅读全文
posted @ 2019-08-30 20:37 要好好吃饭 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 春节的脚步一步步的进,新的一年又来了!在这过去的一年里,我学会很多,也明白了很多!如果说什么?我要感谢很多的人!最感谢的有三个人!一个人曾经中伤了我,我虽然痛心过,但是我并没有恨过!让我懂得和明白了一些事!我感谢这个人,当我要求帮助没有推迟过;同时也给了重新改过的机会,还是像以前那样,真好!还有两个 阅读全文
posted @ 2018-01-30 00:16 要好好吃饭 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 前段时间,我在的项目组准备做一个类似美团外卖的拼手气红包【第X个领取的人红包最大】,基本功能实现后,就要考虑这一操作在短时间内多个用户争抢同一资源的并发问题了,类似于很多应用如淘宝、京东的秒杀活动场景。所谓的秒杀就是多个线程对资源进行操作,而实现秒杀,就必须控制线程对资源的争抢。 传统方法 而最传统 阅读全文
posted @ 2018-01-16 23:09 要好好吃饭 阅读(474) 评论(0) 推荐(1) 编辑
摘要: 1、【导包】使用Spring测试套件,需要两个jar包:junit-X.X.jar和spring-test-X.X.X.RELEASE.jar,在maven项目下可添加如下依赖: 2、【目录结构】在项目下创建一个和src平级的源文件目录test,因为src内的类都是为日后产品准备的,而此处的类仅仅用 阅读全文
posted @ 2017-10-16 13:00 要好好吃饭 阅读(3339) 评论(0) 推荐(0) 编辑
摘要: 今天在尝试配置spring的动态数据源和事务管理的时候,遇到了几处配置上的问题,在此记录下: 1、使用了spring的aop思想,实现了动态数据源的切换。 2、spring的事务管理,是基于数据源的,也就是说Transaction是基于SessionFactory的, 所以如果要实现动态数据源切换, 阅读全文
posted @ 2017-07-11 22:39 要好好吃饭 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: 相同:ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。不同:Synchronized同步机制采用了“以时间换空间”的方式,仅提供一份变量,让不同的线程排队访问;而ThreadLocal采用了“以空间换时间”的方式,每一个线程都提供了一份变量,因此可以同时访问而互不影响 阅读全文
posted @ 2017-06-02 10:56 要好好吃饭 阅读(5910) 评论(0) 推荐(0) 编辑