Java / Java并发

一文吃透Java并发高频面试题

> 内容摘自我的学习网站:topjavaer.cn **分享50道Java并发高频面试题**。 ## 线程池 线程池:一个管理线程的池子。 ### 为什么平时都是使用线程池创建线程,直接new一个线程不好吗? 嗯,手动创建线程有两个缺点 1. 不受控风险 2. 频繁创建开销大 **为什么不受控**? ... »

tyson03 Java

5.5. Java并发工具类(如CountDownLatch、CyclicBarrier等)

#### 5.5.1 CountDownLatch `CountDownLatch`是一个同步辅助类,它允许一个或多个线程等待,直到其他线程完成一组操作。`CountDownLatch`有一个计数器,当计数器减为0时,等待的线程将被唤醒。计数器只能减少,不能增加。 **示例:使用CountDownL ... »

yaoqian

Java的volatile

volatile 关键字可以说是 Java 虚拟机提供的最轻量级的同步机制,但是它并不容易被正确、完整地理解,以至于许多程序员都习惯去避免使用它,遇到需要处理多线程数据竞争问题的时候一律使用 synchronized 来进行同步。了解 volatile 变量的语义对理解多线程操作的其他特性很有意义。 ... »

Java的Atomic原子类

Java SDK 并发包里提供了丰富的原子类,我们可以将其分为五个类别,这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类。 ... »

Java的CAS操作

CAS 是乐观锁设计思想的实现。CAS 的思想是:在“读取 - 修改 - 写回”操作序列中,先读取并修改数据,写回数据前先判断读取数据后的这段时间内数据是否发生变化(共享变量的当前值是否是我们的期望值)。通过 CAS 我们可以以无锁的方式,保证对共享数据进行 “读取 - 修改 - 写回” 操作序列的... ... »

Java的线程

介绍线程 线程是系统调度的最小单元,一个进程可以包含多个线程,线程是负责执行二进制指令的。 每个线程有自己的程序计数器、栈(Stack)、寄存器(Register)、本地存储(Thread Local)等,但是会和进程内其他线程共享文件描述符、虚拟地址空间等。 对于任何一个进程来讲,即便我们没有主动 ... »

Java并发(四)----线程运行原理

1、线程运行原理 1.1 栈与栈帧 Java Virtual Machine Stacks (Java 虚拟机栈 JVM) 我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟机就会为其分配一块栈内存。 每个栈由多个栈帧(Frame)组成,对应着每 ... »

关于Java的HashMap多线程并发问题分析

目录 并发问题的症状 多线程put后可能导致get死循环 多线程put的时候可能导致元素丢失 put非null元素后get出来的却是null HashMap数据结构 HashMap的rehash源代码 正常的ReHash过程 并发的Rehash过程 三种解决方案 Hashtable替 »

详解Java并发编程中的优先级队列PriorityBlockingQueue

目录 一、PriorityBlockingQueue概述 二、PriorityBlockingQueue源码解析 1.容器 2.比较器 3.构造函数 4.添加元素 5.获取元素 6.维护堆性质 总结 PriorityBlockingQueue是Java中实现了堆数据结构的线程安全的有界阻 »

Java并发编程之LongAdder执行情况是什么

这篇文章主要介绍“Java并发编程之LongAdder执行情况是什么”,在日常操作中,相信很多人在Java并发编程之LongAdder执行情况是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java并发编程之LongAdder执行情况是什么”的疑惑有所帮助!接下来 »

Java并发编程之LongAdder执行情况解析

目录 正文 longAccumulate方法 线程hash值 初始化Cell数组 对base进行累加 Cell数组初始化之后 正文 上篇文章 Java并发编程之LongAdder源码(一)中最后写到了有三种情况会执行longAccumulate方法,下面就根据这三种情况来进行分析 »

Java并发包工具类CountDownLatch的应用详解

目录 1.CountDownLatch的源码解读 2.CountDownLatch的原理解析 3.CountDownLatch的应用场景 4.总结 CountDownLatch是Java并发包中非常实用的一个工具类,它可以帮助我们实现线程之间的同步和协作。CountDownLatch的核心思想 »

详解Java并发编程之原子类

目录 原子数组 AtomicIntegerArray 原子更新器 AtomicIntegerFieldUpdater 原子累加器 LongAdder 原子数组 原子数组有AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,主要是用 »

Java并发编程之LongAdder源码解析

目录 前言 源码简介 前言 上一篇文章 Java并发编程之原子类(二)中介绍了LongAdder常用的方法,今天我们根据源码来分析一下它的基本实现流程。 This class is usually preferable to AtomicLong when multiple thread »

Java多线程并发之ReentrantLock

目录 ReentrantLock 公平锁和非公平锁 重入锁 小结 疑惑 ReentrantLock 公平锁和非公平锁 这个类是接口 Lock的实现类,也是悲观锁的一种,但是它提供了 lock和 unlock方法用于主动进行锁的加和拆。在之前使用的 sychronized关键字是 »

深入详解java高并发热点数据更新

目录 mysql update的时候到底是锁行还是锁表? InnoDb 锁简单分类 背景 解决方案 1.支付时异步入账,退款增加一个欠款垫资户 1.加分布式锁 2.新增垫资商户 2.合并请求 demo实现 mysql update的时候到底是锁行还是锁表? InnoDb 锁 »