高并发第一弹:准备阶段 了解高并发
首先需要知道什么并发, 什么是高并发.
并发:
关于并发的学习,可以从JDK提供的并发包为核心开始,许多其他的类和封装都是对其进行扩展或者补充,我们来看一下Java并发包(java.util.concurrent包,简称J.U.C)的构成:
J.U.C核心由5大块组成:atomic包、locks包、collections包、tools包(AQS)、executor包(线程池)。大家平时遇到许多并发相关的类都可以从这里找到。但是呢,要想系统的掌握并发,不能是打开J.U.C这个包,挨个类去看,这里只是提供了五大块,代表核心的五个方向。要想系统的学习并发,还需要从并发的角度学习,过程中覆盖J.U.C的这些知识。:
这个之前呢,还需要对Java并发的基础进行细致的学习,比如CPU缓存和Java内存模型(JMM),许多关键字比如volatile、synchronized等的特性都是在JMM里规定好的。
其实我们讲的都是两部分里的第一部分:并发。那么并发和高并发到底有什么区别呢?
当我们说多线程并发时,其实我们更多的是讨论多个线程操作了相同的资源,这时我们讨论点更多的是落在保证线程安全以及合理分配和使用资源上。而高并发主要指系统运行过程中遇到“短时间内遇到大量操作请求”的情况,主要发生在系统集中收到大量请求(例如:12306的抢票情况;天猫双十一活动)。当我们说高并发时,我们谈的是是如何提高现有程序的性能,更多的是对高并发场景的一些解决方案,思路啦、手段等等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。这里呢,我直接给出高并发场景通常都会考虑的一些解决思路和手段:
如何有效的准备面试中并发类问题,我已经给出我的理解。希望这些能帮大家在脑海里建立起大致的并发知识体系.
jimin老师课程地址:Java并发编程与高并发解决方案