![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发编程
叶落自飘零
我就是我,是颜色不一样的烟火!
展开
-
高并发编程之高并发场景:秒杀(无锁、排他锁、乐观锁、redis缓存的逐步演变)
环境:jdk1.8;spring boot2.0.2;Maven3.3摘要说明:在实际开发过程中往往会出现许多高并发场场景,秒杀,强红包,抢优惠卷等;其中:秒杀场景的特点就是单位时间涌入用户量极大,商品数少,且要保证不可超量销售;秒杀产品的本质就是减库存;秒杀场景常用的解决方案有限流、削峰、拓展等本篇以秒杀场景为依据来主要从代码开发的角度阐述从无锁——》排他锁——》...原创 2018-10-19 14:46:41 · 54839 阅读 · 2 评论 -
java并发编程4.2AQS详解
环境:jdk1.8摘要说明:上一章节我们主要阐述了显示锁的使用详解本章节主要阐述下AQS原理及其使用:1.模版方法设计模式2.AQS详解3.AQS实战步骤:1.模版方法模式模版方法设计模式本质上就是在父类中编排主流程,将步骤实现延迟到子类去实现。主类中需要定义各个步骤的方法但不具体实现,但主类中还需要规定框架方法来组合这些方法来确定主流程;举例:消息...原创 2019-03-05 16:52:09 · 579 阅读 · 0 评论 -
java并发编程4.1显示锁及其与synchronized关键字的比较
环境:jdk1.8摘要说明:上一大章节主要阐述了原子操作CAS及常用的原子操作类本章节主要讲述显示锁的使用及显示锁和synchronized关键字的比较锁是一种通过多个线程控制对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只有一个线程可以获得锁,对共享资源的所有访问都要求先获得锁。然而,一些锁可能允许对共享资源的并发访问,例如ReadWriteLock的读锁。...原创 2019-03-01 16:01:48 · 375 阅读 · 0 评论 -
java并发编程3.1原子操作CAS
环境:jdk1.8摘要说明:上一大章节主要阐述了常用的并发工具类的的使用:本章节主要讲述原子操作CAS及常用的原子操作类;CAS是Compare And Set的缩写,是以一种无锁的方式实现并发控制。在实际情况下,同时操作同一个对象的概率非常小,所以多数加锁操作做的是无用功,CAS以一种乐观锁的方式实现并发控制。步骤:1.CAS之前有写过一个文章《高并发编程之高并发场...原创 2019-02-20 10:56:32 · 571 阅读 · 0 评论 -
java并发编程2.3并发工具类——Semaphore、Exchange、FutureTask
环境:jdk1.8摘要说明:上一章节主要讲述两个工具类CountDownLatch和CyclicBarrier使用及比较;本章节主要讲述其他几个并发工具类的使用:Semaphore:主要用来控制同时访问某个特定资源的线程数量,用在流量控制;Exchange:主要用来进行两个线程间的数据交换;FutureTask:前面已经介绍过,主要结合Callable、Future来进行线...原创 2019-02-18 16:06:01 · 939 阅读 · 0 评论 -
java并发编程2.2并发工具类——CountDownLatch和CyclicBarrier使用及比较
从本章节主要讲述两个工具类CountDownLatch和CyclicBarrier使用及比较;CountDownLatch:一种同步辅助工具,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成;CyclicBarrier:一种同步辅助工具,它允许一组线程相互等待到达共同的屏障点原创 2019-02-02 15:24:18 · 701 阅读 · 0 评论 -
java并发编程2.1并发工具类——Fork-Join
环境:jdk1.8摘要说明:上一大章节主要讲述线程的基础概念,线程间的共享及协作;从本章节开始会介绍并发编程的常用工具类;本章节主要介绍Fork-Join基础概念及用法步骤:1.Fork-Join基础概念什么是分而治之?分而治之的基本思想就是将大任务分割成小任务,最后将小任务聚合起来得到结果。Fork-Join就是基于分而治之思想而设计的,即规模为N的问题,N&...原创 2019-02-01 17:21:03 · 750 阅读 · 0 评论 -
java并发编程1.4线程间的协作——wait、notify/notifyAll等
环境:jdk1.8摘要说明:上两章我们主要讲了线程共享的相关关键字的使用方法;本章节主要讲述线程协作的相关概念及一些关键字用法线程间的协作:假设A线程不满足某个业务条件进行不下去,线程处于等待中;即此时需要等待B线程进行相关操作满足A线程的业务员条件;如果需要A不停的轮询去查询条件是否满足就显得笨重及不高效,此时如果B满足条件后通知A线程停止等待才最为高效快捷,这就是线程间的协...原创 2019-01-30 18:07:13 · 764 阅读 · 0 评论 -
java并发编程1.3线程间的共享——volatile,ThreadLocal
环境:jdk1.8摘要说明:上一张介绍了synchronized关键字的使用;本章节主要讲述java内存中的一些相关概念及volatile,ThreadLocal关键字的用法;步骤:1.基础概念本章节我们主要介绍java内存模型的三大特征:原子性,可见性,有序性;原子性:原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操...原创 2019-01-29 17:23:33 · 543 阅读 · 0 评论 -
java并发编程1.2线程间的共享——synchronized
环境:jdk1.8摘要说明:上节我们主要介绍了线程的基础概念,启动停止方式,状态及常用方法多个线程同时进行时,往往需要共享资源,如变量;本节主要讲述线程间共享的关键词synchronized的使用;synchronized关键字:代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同...原创 2019-01-21 16:43:16 · 320 阅读 · 0 评论 -
java并发编程1.1线程基础
摘要说明:本篇文章首先带领大家了解下一些基础概念,接着介绍下java常用的线程启动方式;步骤:1.基础概念CPU核心数和线程数的关系核心数:线程数=1:1 ;使用了超线程技术后---> 1:2;这里面指的是同一时刻cpu执行线程数CPU时间片轮转机制又称RR调度,会导致上下文切换;时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度。为了实现...原创 2019-01-21 10:14:53 · 348 阅读 · 0 评论