深入理解final关键字

深入理解final关键字

final 关键字在我们学习 Java 基础时都接触过,而且 String 类本身就是一个 final 类,此外,在使用匿名内部类的时候可能会经常用到 final 关键字。那么 final 关键字到底有什么特殊之处,今天我们就来了解一下。final关键...
深入理解synchronized关键字

深入理解synchronized关键字

前言线程安全在并发编程学习过程中,我们应该都听过“线程安全”这个名称,对于这一概念,我们知道它可以解决并发编程不安全的问题,也有一个简单的印象:“代码在并发环境下,可以安全地被多个线程使用,这就是线程安全“。上...
深入理解volatile关键字

深入理解volatile关键字

前言volatile 这个关键字可能很多朋友都听说过,它有两个重要的特性:保证可见性和禁止指令重排序。但是对于 volatile 的使用以及背后的原理我们一无所知,所以本文将带你好好了解一番。由于 volatile 关键字是与 Java的内...
Happens-Before规则详解

Happens-Before规则详解

在《Java并发编程Bug的源头》一节中提到编译优化会带来有序性问题,具体来说就是 JIT 编译器会进行指令重排序(Instruction Reorder)优化。优化措施引发的有序性问题,Java 语言肯定会注意到,所以就引入了 Happens-Before...
Java并发编程Bug的源头

Java并发编程Bug的源头

相信大家都听说过并发编程,面试中也经常会被提问这一知识点,有时候让讲讲自己有没有并发编程的经验,细致地讲一下。结果可想而知,理论知识还可以说一说,但没多少实践经验,更让人头疼的是理论与实践差距极大。在工作中...
Java内存模型(JMM)详解

Java内存模型(JMM)详解

紧接前文,在了解了计算机的相关概念后,我们正式进入 Java 并发知识的学习。本文主要讲解 Java 内存模型(Java Memory Model,JMM),它是 Java 虚拟机规范中定义的一种模型,用于屏蔽掉各种硬件和操作系统的内存访问差异...
关于计算机的一些知识

关于计算机的一些知识

CPU、内存、I/O设备三者的处理速度差异很大,其中 CPU 处理速度最高,I/O设备速度最差。而一个系统中会同时用到这三者,根据木桶理论(一只水桶能装多少水取决于它最短的那块木板),程序整体的性能取决于最慢的操作——读写 ...
Java并发编程入门学习之主流锁

Java并发编程入门学习之主流锁

Java锁学习Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同...
Java并发编程入门学习之单例模式

Java并发编程入门学习之单例模式

介绍什么是单例模式?通俗的讲,就是在应用程序中只需要某个类保留唯一一个实例对象,不希望有更多的实例。单例模式是 Java 设计模式中最简单的设计模式之一,在应用程序中经常被用到。应用场景单例模式的应用场景有很多,...
Java并发编程入门学习之函数式接口和Stream流

Java并发编程入门学习之函数式接口和Stream流

四大函数接口什么是函数式接口?有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambda 就是 Java 中函数式编程的体现,可以使用Lambda表达式创建一个函数式接口的对象,一定要确保接口中...