09 2019 档案
摘要:提前发现更多精彩内容,请访问 "个人博客" 提前发现更多精彩内容,请访问 "个人博客" 提前发现更多精彩内容,请访问 "个人博客" 写在前面 在 "可见性有序性,Happens before来搞定" 文章中,happens before 的原则之一: volatile变量规则 对一个 volatil
阅读全文
摘要:上一篇文章 "可见性有序性,Happens before来搞定" ,解决了并发三大问题中的两个,今天我们就聊聊如何解决原子性问题 原子性问题的源头就是 线程切换 ,但在多核 CPU 的大背景下,不允许线程切换是不可能的,正所谓「魔高一尺,道高一丈」,新规矩来了: 互斥: 同一时刻只有一个线程执行 实
阅读全文
摘要:写在前面 上一篇文章 "并发 Bug 之源有三,请睁大眼睛看清它们" 谈到了 三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO 的短板,增加了缓存,但这导致了可见性问题 编译器/处理器 优化 ( Java代码在编译后会变成 Java 字节码,
阅读全文
摘要:写在前面 生活中你一定听说过——能者多劳 作为 Java 程序员,你一定听过——这个功能请求慢,能加一层缓存或优化一下 SQL 吗? 看过中国古代神话故事的也一定听过——天上一天,地上一年 一切设计来源于生活,上一章 "学并发编程,透彻理解这三个核心是关键" 中有讲过,作为"资本家",你要尽可能的榨
阅读全文
摘要:关于 Java String,这是面试的基础,但是还有很多童鞋不能说清楚,所以本文将简单而又透彻的说明一下那个让你迷惑的 String 在 Java 中,我们有两种方式创建一个字符串 你常见也常写第一种,很少见第二种,但面试还总问这类问题,双引号和构造器两种形式创建字符串到底有什么差别呢? 先来看例
阅读全文
摘要:写在前面 上一篇文章 "这次走进并发的世界,请不要错过" 给大家带了并发编程的开胃菜,接下来我们逐步上正餐,在吃正餐之前,我还要引用那首诗词: 「横看成岭侧成峰,远近高低各不同」,远看看轮廓,近看看细节,不断切换思维或视角来学习 远看并发, 并发编程可以抽象成三个核心问题: 分工、同步/协作、互斥
阅读全文