![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java高并发
文章平均质量分 95
hresh
这个作者很懒,什么都没留下…
展开
-
深入理解final关键字
在 Java 中,我们最初认识final 关键字可以用来修饰类、方法和变量(包括成员变量和局部变量),本文从闭包开始带大家认识 Java 的匿名内部类,介绍 final 关键字在匿名内部类中使用。以及最后深入底层分析final 关键字为何可以保证 final 域的可见性。原创 2022-09-08 07:33:47 · 309 阅读 · 0 评论 -
深入理解synchronized关键字
在并发编程学习过程中,我们应该都听过“线程安全”这个名称,对于这一概念,我们知道它可以解决并发编程不安全的问题,也有一个简单的印象:“代码在并发环境下,可以安全地被多个线程使用,这就是线程安全“。上述关于“线程安全”的认识大致是对的,我们来看看别人是如何定义“线程安全”的。《Java并发编程实战(Java Concurrency In Practice) 》 的作者 Brian Goetz 为“线程安全”做出了一个比较恰当的定义: “原创 2022-09-01 21:10:03 · 392 阅读 · 1 评论 -
深入理解volatile关键字
保证可见性和禁止指令重排序。但是对于 volatile 的使用以及背后的原理我们一无所知,所以本文将带你好好了解一番。由于 volatile 关键字是与 Java的内存模型有关的,因此在讲述 volatile 关键之前,我们先来了解一下Java 内存模型,然后介绍 volatile 关键字的使用,最后详解 volatile 关键字的原理。废话不多说,我们直接进入正文。...原创 2022-08-16 22:23:11 · 193 阅读 · 0 评论 -
Happens-Before规则详解
本文为《Java高并发》第四篇文章,首发于。在《》一节中提到编译优化会带来有序性问题,具体来说就是JIT编译器会进行指令重排序(InstructionReorder)优化。优化措施引发的有序性问题,Java语言肯定会注意到,所以就引入了Happens-Before(先行发生)原则,它是JMM最核心的概念,在中提到了如何保证可见性和有序性,都和该原则有关联。对应Java程序员来说,理解Happens-before是理解JMM的关键。...原创 2022-07-14 22:07:34 · 587 阅读 · 0 评论 -
Java并发编程Bug的源头
相信大家都听说过并发编程,面试中也经常会被提问这一知识点,有时候让讲讲自己有没有并发编程的经验,细致地讲一下。结果可想而知,理论知识还可以说一说,但没多少实践经验,更让人头疼的是理论与实践差距极大。在工作中,系统的并发量比较低,借助数据库和类似 Tomcat 这种中间件,我们基本上不用写并发程序。总之一句话,系统并发量不高的时候,并发问题基本上都被中间件和数据库解决了,或者系统数据量比较庞大,对性能有所要求,此时就需要用到并发编程了。并发编程是个好东西,但天下没有免费的午餐,凡事都是有代价的,获得高性能的同原创 2022-07-07 14:43:35 · 157 阅读 · 0 评论 -
Java并发进阶之:关于计算机的一些知识
CPU、内存、I/O设备三者的处理速度差异很大,其中 CPU 处理速度最高,I/O设备速度最差。而一个系统中会同时用到这三者,根据木桶理论(一只水桶能装多少水取决于它最短的那块木板),程序整体的性能取决于最慢的操作——读写 I/O 设备,也就是说单方面提高 CPU 性能是无效的。为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统都做出了贡献,主要体现为:那么接下来让我们看看计算机究竟做了什么贡献,关于进程和线程留到 Java 并发中再做介绍。我们当前使用的计算机硬件架构为冯·诺依原创 2022-07-02 14:31:41 · 322 阅读 · 0 评论 -
Java并发进阶之:Java内存模型(JMM)详解
紧接前文,在了解了计算机的相关概念后,我们正式进入 Java 并发知识的学习。本文主要讲解 Java 内存模型(Java Memory Model,JMM),它是 Java 虚拟机规范中定义的一种模型,用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的并发效果,JMM 规范了 Java 虚拟机与计算机内存是如何协同工作的:规定了一个...原创 2022-07-02 14:33:07 · 448 阅读 · 0 评论