Java并发
166 人感兴趣 · 43 次引用
- 最新
- 推荐
Java 并发夺命 23 问
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~
盘点 JDK 中基于 CAS 实现的原子类
JDK中提供了一系列的基于CAS实现的原子类,CAS 的全称是Compare-And-Swap,底层是lock cmpxchg指令,可以在单核和多核 CPU 下都能够保证比较交换的原子性。所以说,这些原子类都是线程安全的,所以在某些场景下性能是优于加锁。
乐观锁思想在 JAVA 中的实现——CAS
生活中我们看待一个事物总有不同的态度,比如半瓶水,悲观的人会觉得只有半瓶水了,而乐观的人则会认为还有半瓶水呢。很多技术思想往往源于生活,因此在多个线程并发访问数据的时候,有了悲观锁和乐观锁。
深刻理解 JAVA 并发中的有序性问题和解决之道
JAVA并发中的有序性问题其实比较难理解,本文通过一个例子验证了并发情况下会出现有序性的问题,从而引发意想不到的结果。这个主要的原因是为了提高性能,指令会发生重排序导致的。
Java 并发编程解析 | 如何正确理解 Java 领域中的锁机制,我们一般需要掌握哪些理论知识?
提起Java领域中的锁,是否有种“道不尽红尘奢恋,诉不完人间恩怨“的”感同身受“之感?细数那些个“玩意儿”,你对Java的热情是否还如初恋般“人生若只如初见”?

离谱! 这本书居然将高深莫测的 Java 高并发知识讲解得浅显易懂
大家好,我是了不起的程序猿。2022金九银十即将来临了,随着5G时代已经开始,现在的各个大厂秋招基本都提高了 对Java应用的高性能、高并发的要求,也抬升了Java工程师的技术台阶 和面试门槛。
小白必看,通俗易懂的 LockSupport
Java并发编程系列第三篇LockSupport,上一篇Synchronized文章中有提过,不推荐读者们使用Object的wait、notify、notifyAll等函数做多线程间的通信协同,使用LockSupport会是更好的选择,本篇就来谈谈LockSupport。


In-depth Java synchronized
并发编程的两个核心问题:互斥和同步。互斥是指在同一时刻只允许一个线程访问共享资源;同步是指线程之间如何通信、协作。Java 中提供了很多并发编程的工具,其中有关键字 synchronized 也有 JUC 类库,为 Java 程序员编写并发程序带来很大的便利性。




Java 并发编程:AQS 的互斥锁与共享锁
我们知道现代机器处理器几乎都是多核多线程的,引入多核多线程机制是为了尽可能提升机器整体处理性能。但是多核多线程也会带来很多并发问题,其中很重要的一个问题是数据竞争,数据竞争即多个线程同时访问共享数据而导致了数据冲突(不正确)。数据竞争如果没

Java 并发编程:volatile 能否保证数据的同步
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。

Java 并发编程:多线程如何实现阻塞与唤醒
线程的阻塞和唤醒在多线程并发过程中是一个关键点,当线程数量达到很大的数量级时,并发可能带来很多隐蔽的问题。如何正确暂停一个线程,暂停后又如何在一个要求的时间点恢复,这些都需要仔细考虑的细节。Java为我们提供了多种API来对线程进行阻塞和唤醒操作

Java 并发编程:任务执行器 Executor 接口
任务执行器(Executor)是一个接口,位于java.util.concurrent包下,它的作用主要是为我们提供任务与执行机制(包括线程使用和调度细节)之间的解耦。比如我们定义了一个任务,我们是通过线程池来执行该任务,还是直接创线程来执行该任务呢?通过Executor就能

Java 并发编程:多线程并发内存模型
多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络

Java 并发编程:并发中死锁的形成条件及处理
死锁是一种无限的互相等待的状态,两个或两个以上的线程或进程构成一个互相等待的环状。以两个线程为例,线程一持有A锁同时在等待B锁,而线程二持有B锁同时在等待A锁,这就导致两个线程互相等待无法往下执行。现实生活中一个经典的死锁情形就是四辆汽车通过没

Java 并发编程:进程、线程、并行与并发
一谈到Java并发编程,我们一般就会联想起进程、线程、并行、并发等等概念。那么这些概念都代表什么呢?进程与线程有什么关系?并发与并行又是什么关系呢?

java 安全编码指南之:Thread API 调用规则
java中多线程的开发中少不了使用Thread,我们在使用Thread中提供的API过程中,应该注意些什么规则呢?

死磕 Java 并发编程(9):无界线程安全队列 ConcurrentLinkedQueue 源码解析
这篇文章理解起来不难,相比于 ConcurrentHashMap 比较简单,因为不涉及扩容以及数据迁移等操作,相信你读完一定会有收获的。

死磕 Java 并发编程(8):CurrentHashMap 如何实现高效地线程安全?在 Java8 中有哪些设计实现的演进?
ConcurrentHashMap在Java8中有哪些优化?