首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java 并发编程
码哥字节
创建于2021-05-13
订阅专栏
由浅到深的探索 Java 并发原理,编程技巧以及 JDK 8 新特性
等 4 人订阅
共14篇文章
创建于2021-05-13
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
面霸篇:Java 集合容器大满贯(卷二)
顾名思义,集合就是用于存储数据的容器。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
面霸篇:Java 核心基础大满贯(卷一)
面霸篇,从面试题作为切入点提升大家的 Java 内功,所谓根基不牢,地动山摇。只有扎实的基础,才是写出写好代码。
synchronized 是王的后宫总管,线程是王妃
假如 synchronized 是「王」身边的「大总管」,那么 Thread 就像是他后宫的王妃。「王」每日只能选择一个==王妃==陪伴,王妃们会想方设法争宠获得陪伴权,大总管需要通过一定的手段让王「翻牌」一个「王妃」与王相伴。 「码哥字节」讲通过几个故事,通俗易懂的让读者朋友…
从 JMM 透析 volatile 与 synchronized 原理
在面试、并发编程、一些开源框架中总是会遇到 volatile 与 synchronized 。synchronized 如何保证并发安全?volatile 语义的内存可见性指的是什么?这其中又跟 JMM 有什么关系,在并发编程中 JMM 的作用是什么,为什么需要 JMM?与 J…
解决线程饥饿高性能利器 StampedLock
在JDK 1.8 引入 StampedLock,可以理解为对 ReentrantReadWriteLock 在某些方面的增强,在原先读写锁的基础上新增了一种叫乐观读(Optimistic Reading)的模式。该模式并不会加锁,所以不会阻塞线程,会有更高的吞吐量和更高的性能。…
管程(Moniter): 并发编程的基本心法
JavaStorm关注公众号获取更多并发在吃透Syncchronized原理中介绍了关于Synchronize的实现原理,无论是同步方法还是同步代码块,无论是ACC_SYNCHRONIZED还是mon
Java 线程生命周期
在操作系统层面,线程也有 【生命周期】,这是并发编程的基础我们需要掌握其中生命周期中各个节点的状态转换机制以及持有锁状态。文本将会介绍系统的周期以及在 Java编程语言的生命周期区别。打通并发编程任督二脉需要将基本心法牢牢掌握。 可以用如下图所示的 “五态模式” 来描述,分别为…
管程(Moniter) 并发编程的基本心法
在吃透 Syncchronized 原理 中介绍了关于 Synchronize的实现原理,无论是同步方法还是同步代码块,无论是ACC_SYNCHRONIZED还是monitorenter、monitorexit都是基于Monitor实现的,那么这篇来介绍下什么是Monitor。…
Semaphore:实现一个限流器
Semaphore 现在普遍翻译成 "信号量",从概念上讲信号量维护着一组 "凭证",获取到凭证的线程才能访问资源,使用完成后释放, 我们可以使用信号量来限制访问特定资源的并发线程数。 就像现实生活中的停车场车位,当有空位的时候才能放车子进入,不然就只能等待,出来的车子则释放凭…
发生死锁怎么办
我们使用锁来保证线程安全,但是使用不当与滥用可能就会引起死锁。并发程序一旦死锁,一般没有特别好的办法,很多时候只能重启。所以我们一定要比避免死锁。 举个不恰当的例子:现在岳不群通过阴谋手段获取到了葵花宝典的上册,然后就闭关修炼自宫了,此刻他想继续争夺下册一块练,不然自宫就白忙活…
Spring Boot使用@Async实现异步调用
异步调用对应的是同步调用,同步调用可以理解为按照定义的顺序依次执行,有序性;异步调用在执行的时候不需要等待上一个指令调用结束就可以继续执行。 我们将在创建一个 Spring Boot 工程来说明。具体工程可以参考github代码 https://github.com/Uniqu…
Synchronized 实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized。对于当时的我们来说,synchronized是如此的神奇且强大。我们赋予它一个名字“同步”,也成为我们解决多线程情况的良药,百试不爽。但是,随着学习的深入,我们知道synchronized是一个重量…
Java内存模型(Java Memory Model,JMM)
今天简单聊聊什么叫做 Java 内存模型,不是 JVM 内存结构哦。 JMM决定一个线程对共享变量的写入何时对另一个线程可见,尤其是在对共享变量的读写,修改后其他线程立刻内读取到,这个就是JMM主要作用。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变…
volatile底层原理详解
首先我们从定义开始入手,官方定义比较拗口。通俗来说就是一个字段被volatile修饰,Java的内存模型确保所有的线程看到的这个变量值是一致的,但是它并不能保证多线程的原子操作。这就是所谓的线程可见性。我们要知道他是不能保证原子性的。 Java线程之间的通信由Java内存模型(…