![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
.Java并发编程与高并发
文章平均质量分 70
哪里都有好故事
不想进BAT的程序员不是一个好司机
展开
-
CPU多级缓存-缓存一致性
MESI(缓存一致性) 缓存一致性,用于保证多个CPU cache之间缓存共享数据的一致性。 MESI协议将cache line的状态分为modify(修改),exclusive(独占),shared(共享),invalid(失效)。 modify:当前CPU cache拥有最新数据,其他CPU拥有失效数据(cache line的状态是invalid),虽...原创 2018-04-08 18:40:40 · 813 阅读 · 1 评论 -
java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。 主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量主要是指共享变量,存在竞争问题的变量。Java内存模型规定所有的变量都存储在主内存中,而每条线程还...原创 2018-04-09 22:13:38 · 160 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
HashMap不是线程安全的,ConcurrentHashMap引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的Hashtable,根据Key,hashCode()来决定把key放到哪个Hashtable中。 在ConcurrentHashMap中,就是把Map分为了N个Segment,put()和get()时都是根据key.hashCode()算出放到哪个Segment...原创 2018-05-09 22:27:35 · 129 阅读 · 0 评论 -
synchronized实现原理
synchronized有何作用? 线程安全对于并发编程是十分重要的,造成线程安全问题的原因主要有两点: 一.存在共享数据(临界资源) 二.存在多条线程共同操作共享数据 我们需要当存在多个线程共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共享数据被当前正...原创 2018-04-26 20:17:17 · 128 阅读 · 0 评论 -
利用Callable接口实现多线程
优点:可以获取返回值,可以抛出异常 Callable和Future接口 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务 Callable和Runnable的不同: (1)Callable规定的方法是call(),而Runnable规定的方法是run()。 (2)call()方...原创 2018-05-19 17:29:29 · 392 阅读 · 0 评论 -
Java并发编程:线程池的原理
为什么我们要用线程池?1.如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 假如创建一个线程消耗时间为T1,执行任务消耗时间T2,销毁线程消耗时间T3。 如果T1+T3 > T2,线程用来创建和销毁的时间大于了执行任务的...原创 2018-04-29 12:00:58 · 180 阅读 · 0 评论 -
高并发秒杀系统设计
高并发秒杀系统设计功能模块划分-》秒杀策略-》自己的优化点-》工具测试抗压-》一.秒杀系统特点1.秒杀业务简单,卖家查询,买家下订单减库存2.秒杀时网站访问流量激增,出现峰值3.访问请求数量远大于实际需求量二.架构设计优化方案1.秒杀系统架构设计优化一个常规的秒杀系统从前到后,依次有: 前端浏览器秒杀页面-》中间代理服务-》后端服务层-》数据库层根据这个流程,一般优化设计思路...原创 2018-10-11 18:44:06 · 1336 阅读 · 0 评论