“高并发和多线程”总是被一起提起,给人感zhi觉两者好像相等,实则 高并发 ≠ 多线程
多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。
高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……而多线程只是其中解决方法之一。
多线程高并发思维导图
需要获取高清导图点赞支持一下
下面给大家分享出这份由马士兵大佬编写的《多线程高并发》最新版笔记详解!(+配套视频)
第一节:线程的基本概念
多线程与高并发大概讲六大块:
- 第一:基本的概念
- 第二:jUC同步工具
- 第三:同步容器
- 第四:线程池
- 第五:高频面试加分项
- 第六: Disruptor
我们先说一下为什么要讲多线程和高并发?
原因是,你想拿到一个更高的薪水,在面试的时候呈现出了两个方向的现象:
第一个是上天
- 项目经验
- 高并发 缓存 大流量 大数据量的架构设计
第二个是入地
- 各种基础算法,各种基础的数据结构
- JVM OS 线程 IO等内容
多线程和高并发,就是入地里面的内容。
第二节: volatile与CAS
- 1 :保证线程的可见性
- 2 :禁止指令重新排序
CAS
第三节: Atomi类和线程同步新机制
- 间歇性复习
第四节: LockSupport、 淘宝面试题与源码阅读方法论
淘宝面试题
- 面试题一
面试题1中的9个小程序9种方案, 5种技术分别是volatile、wait()和notify()、 Semaphore.CountDownLatch、LockSupport ,其中wait()和notify()这个方案建议牢牢掌握,其它的可以用作巩固技术。
- 面试题2
阅读源码的原则
第五节: AQS源码阅读与强软弱虚4种引用以
通过ReentrantLock来解读AQS源码
为什么是双向链表?
- ThreadLocal源码
- 及ThreadLoca1原理与源码
- 为什么要用ThreadLocal ?
- java的四种引用:强软弱虚人
- 强引用
- 软引用
第六节:并发容器
容器
第七节:线程池
我怎么定义这一个线程池,这里面的七个参数,
- ●第一个参数corePoolSoze核心线程数,
- ●第二个叫maximumPoolSize最大线程数,
- ●第三个keepAliveTime生存时间
- ●第四个TimeUnit.SECONDS生存时间的单位到底是毫秒纳秒还是秒自 已去定义;
- ●第五个是任务队列,就是我们上节课讲的BlockingQueue ,
- ●第六个是线程工厂
- ●第七个叫拒绝策略,
第八节:线程池与源码阅读
- 线程池worker任务单元
- 核心线程执行逻辑runw orker
第九节: JMH与Di srup tor
需要获取这本电子书的小伙伴可以点赞支持一下。
配套马老师亲授多线程高并发视频