![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【高并发专题】
老汉健身
这个作者很懒,什么都没留下…
展开
-
【高并发专题】-java线程安全-线程之间内存可见性
对于线程内存可见性问题,前面已经梳理过了,不想再浪费篇幅,之间戳这篇:https://blog.csdn.net/lovexiaotaozi/article/details/81359365原创 2019-06-05 10:34:16 · 196 阅读 · 0 评论 -
【高并发专题】-java线程安全-有序性
我们编写的代码计算机是不能直接识别的(汇编语言除外),以java为例,编写后的代码需要通过编译器编译成.class字节码文件,再由jit编译成机器码运行在Jvm中,而且在jvm机器码的运行顺序还要经过cpu调度,在编译和cpu调度期间,为了提高性能,编译器和cpu可能会对代码顺序进行重排序,所以代码实际运行的顺序未必与我们书写的代码顺序保持一致.在单线程的情况下,由Happens-before规则...原创 2019-06-05 15:35:26 · 174 阅读 · 0 评论 -
【高并发专题】-JUC-AQS及拓展组件详解
本篇主要介绍AQS原理及其构建的各种同步装置和锁.AQS是类AbstractQueuedSynchronizer的缩写,位于java.util.concurrent包下,可以用来构建锁,各种同步装置.其底层的数据结构如下图:是基于链表实现的FIFO队列,队列中维护了等待线程的各种信息.AQS内部使用int类型的state来表示状态,state=0表示还没有线程获取锁,1表示已有线程...原创 2019-06-12 15:42:27 · 318 阅读 · 0 评论 -
【高并发专题】-java线程安全-线程安全策略
1.使用单例确保发布对象的安全单例是最为常见的一种设计模式,关于单例也有非常多种实现方式,平时看到最多的就是饿汉式和懒汉式,我在前面的设计模式章节有详解,这里不多说,我这里仅提一下一种基于饿汉式的改进单例,具有诸多优点,在spring源码中亦有大量使用.是采用枚举的方式实现的单例,好处显而易见,我们在传统的饿汉式实现方式中,虽然解决了线程安全问题,但是饿汉式不能做到在调用时才创建对象,有时对象...原创 2019-06-06 11:10:59 · 338 阅读 · 0 评论 -
【高并发专题】-高并发下前后端常用解决方案总结(全套)
鲁迅说过:如果你也想戴上高级Java程序员这顶高帽子,那么高并发相关解决方案你必须深入骨髓.高并发场景下,主要解决几个问题:①请求的响应时间变长,如何才能减少请求响应时间,提升用户体验.②数据的安全,在高并发多线程场景下,由于竟态条件,指令重排等影响,很容易出现数据不安全问题,需要避免.③高并发场景下,容易造成服务器过载,造成单点故障....为了改善高并发带来的种种问题,已...原创 2019-06-14 19:01:35 · 3534 阅读 · 0 评论 -
【高并发专题】-java线程安全-原子性-Automic包详解
线程安全性当多个线程同时访问某个类时,不管采取何种线程调度方法,在主调代码中不需要采取额外的同步或者协同,这个类都能表现出正确的行为,那么这个类就是线程安全的.线程安全的三个特性原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作.可见性:一个线程对主内存的修改会被其他线程所看到.有序性:编译器和处理器可能会为了性能对操作指令进行重新排序,重新排序后对单个线程的程序执行...原创 2019-06-04 10:21:33 · 1809 阅读 · 0 评论 -
【高并发专题】-java线程安全-原子性-Lock包详解
对于锁,已经是老生常谈了,前面也梳理过很多次了,我甚至都不想再写这篇了,但其在高并发多线程中的重要性还是不言而喻的,所以还是决定再开一篇,从更深层的角度分析JUC提供的lock包.先来看一下jdk1.8-api,java.util.concurrent.locks包的结构:其中红框中勾出来的是比较重要且经常被用到的,必学必会的部分.提到锁,先来说一下最最常见的锁:synchro...原创 2019-06-04 18:34:18 · 619 阅读 · 0 评论