一、课程特点:

1、之相关知识体系包括:

线程安全、线程封闭、线程调度、同步容器、并发容器、AQS、J.U.C等等;

2、高并发解决思路与手段,包括:

扩容:

缓存:

队列:

拆分:

服务降级与熔断:

数据库切库:

分库分表:

等等;

3、

Java如何解决并发问题 java高并发_Java如何解决并发问题

Java如何解决并发问题 java高并发_数据库_02

4、最简单的场景举例:

实现一个计数功能,即将一个数字进行累加,如果是一个线程,没问题,但是多个线程,比如同时有200个线程执行,则结果完全有可能不一样,比如实例中运行时,发现最后的结果(累加和)总是小于预期,而且每次执行的结果可能不一样。 

三、基本概念:

1、基础知识:

并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。

高并发:高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求;

2、对比基本概念:

并发:多个线程操作相同的资源,保证线程安全,合理使用资源;

高并发:系统运行时,服务能同时处理很多请求,提高程序性能;比如双十一、12306等短时间内遇到大量请求的情况,这时系统在短时间内会执行大量的操作,例如对系统的请求,对数据库的操作等等。如果处理不好,不仅会造成用户体验度不好,请求请求时间边长,同时也可能导致系统宕机,严重的甚至导致系统OOM异常,机器停止工作。

3、应对考虑:

如果要想系统能够应对高并发的状态,就需要从多个方面进行优化,比如硬件、网络、系统架构、开发语言的选取、数据结构的应用、算法优化、数据库优化等等。

4、知识技能:

》总体架构:Spring Boot、Maven 、JDK8、MySQL

》基础组件:Mybatis、Guava、Lombok、Redis、Kafka

》高级组件(类):Joda-Time、Atomic包、J.U.C、AQS、ThreadLocal、RateLimiter、Hystrix、threadPool、shardbatis、curator、elastic-job等。