面试官:我问的是Java内存模型,你回答堆栈方法区干嘛?
[#](#一-概述) (一)概述 {#一-概述} ------------------------ 很多人会把Java内存区域(运行时数据区)和Java内存模型(JMM)搞混,这两者是完全不一样的东西。 Java内存区域是指JVM运行时数据分区域存储,而Java内存模型是定义了线程和主内存之间的抽象关系,了解Java内存模型是学好Java并发编程的基础。 [#](#二-j...
[#](#一-概述) (一)概述 {#一-概述} ------------------------ 很多人会把Java内存区域(运行时数据区)和Java内存模型(JMM)搞混,这两者是完全不一样的东西。 Java内存区域是指JVM运行时数据分区域存储,而Java内存模型是定义了线程和主内存之间的抽象关系,了解Java内存模型是学好Java并发编程的基础。 [#](#二-j...
面试官在问到多线程编程的时候,指令重排序、内存屏障经常会被提起。如果你对这两者有一定的理解,那这就是你的加分项。 [#](#一-什么是指令重排序) (一)什么是指令重排序 {#一-什么是指令重排序} ------------------------------------------ 为了使处理器内部的运算单元能尽量被充分利用,处理器可能会对输入的代码进行乱序执行优化,处理...
[#](#一-概述) (一)概述 {#一-概述} ------------------------ 要了解并发编程,首先就需要了解并发编程的三大特性:**可见性、原子性和有序性。** 我们今天要讲的volatile保证了**可见性和有序性** ,但是**不保证原子性**。接下来会通过几段代码和几张图来强化对volatile的了解。 [#](#二-volatile保证可见性)...
并发编程算是Java的一个难点,经常做业务相关的程序员基本上用不到juc的包,但是这些知识点十分重要,所以不管在哪里,时刻保持学习真的很重要。 [#](#一-aqs概述) (一)AQS概述 {#一-aqs概述} --------------------------------- Java并发编程的核心在于java.concurrent.util包,juc中大多数同步器的实现...
关于Java多线程锁的升级原理,这篇文章会让你另有收获 ### [#](#_2-1-java对象内存布局) 2.1 Java对象内存布局 {#_2-1-java对象内存布局} 在了解锁升级原理之前我们首先要了解一下Java对象在内存中的布局 ![](http://static.51tbox.com/static/2024-10-27/col/3f875ab5c22667b...
[#](#一-概述) (一)概述 {#一-概述} ------------------------ 资源的分配方式有两种,一种是独占,比如之前讲的ReentrantLock,另外一种是共享,即我们今天将要学习的**Semaphore** 、**CyclicBarrier** 以及**CountDownLatch**。这些都是JUC包中的类。 [#](#二-semaphore...
[#](#一-什么是threadlocal) (一)什么是ThreadLocal {#一-什么是threadlocal} ------------------------------------------------------------ ThreadLocal顾名思义是保存在每个线程本地的数据,ThreadLocal提供了线程局部变量,**即每个线程可以有属于自己的变量...
[#](#一-什么是maven) (一)什么是Maven {#一-什么是maven} ------------------------------------------ Maven是Apache下的一个开源项目,目前可以用于构建和管理任何基于 Java 的项目的工具,让 Java 开发人员的日常工作更轻松。为了让开发人员更轻松,Maven做到了以下几点: ### [#](...
[#](#一-概述) (一)概述 {#一-概述} ------------------------ SpringBoot作为现在工作中最常用的一个框架,大部分人对他都只做到了会用这一步,但是SpringBoot的许多细节却被我们所忽略掉了,因此我打算写这样一个有关SpringBoot的系列文章,争取能让不管是新手还是老手都能从中再学到东西。 [#](#二-快速搭建一个spr...
[#](#一-概述) (一)概述 {#一-概述} ------------------------ Springboot相比于之前spring的一个很大进步在于我们不用再手动配置一系列配置文件,springboot会自动帮我们配置。关于springboot自动装配的原理我们依旧需要了解。 [#](#二-pom文件的补充) (二)pom文件的补充 {#二-pom文件的补充} ...