Java亿级流量高并发设计解决方案 之 JVM与JDK相关

本文探讨了JVM在高并发场景下的核心概念,包括内存区域和内存模型,以及如何利用volatile解决可见性和重排序问题。同时,文章详细介绍了Java的同步机制,如synchronized、线程通信、Lock以及CAS无锁算法,为处理亿级流量的并发问题提供了策略。
摘要由CSDN通过智能技术生成

1.JVM核心概念及JVM对高并发的支持

JVM是安装在操作系统上的虚拟机,Java代码直接操作的对象就是JVM。因此Java可以实现一次编写,多处运行。

1.1JVM内存区域
  • 方法区,堆,虚拟机栈,本地方法栈,程序计数器
    前两个所有线程共享
    后三个是各自线程私有
1.2JVM内存模型(JMM)

JVM内存划分为主内存工作内存
每个线程都存在主内存中,而每个线程还拥有自己独立的线程。可以通过主内存,访问其他线程的私有变量。

1.3使用volatile解决可见与重排序

volatile是JVM提供的一种轻量级的同步机制

  • volatile修饰的变量可以被所有线程立即可见:之前说某一线程可通过主内存与其他线程交流。但若给变量加上volatile,则该线程的任何操作对其它线程都是可见的。
  • volatile可禁止指令进行重排
    重排是Java为了提高效率对代码进行的优化,不会影响到单线程的运行结果
    典型的双重检验锁就是利用volatile防止指令重排。

但volatile不是线程安全的,它只具有可见性,并不具有原子性。
可以使用原子类型(内部也是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

匿名王同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值