首页
免费资料
个人网站
我的掘金
我的公众号
工具推荐
电影推荐
纪录片推荐
英语相关
环境搭建
月伴飞鱼
行动起来,活在当下
累计撰写
126
篇文章
累计创建
31
个标签
累计收到
1
条评论
栏目
首页
免费资料
个人网站
我的掘金
我的公众号
工具推荐
电影推荐
纪录片推荐
英语相关
环境搭建
目 录
CONTENT
以下是
并发编程
相关的文章
2025-04-28
Synchronized为啥需要维护一个计数器呢?独占锁一个状态表示就行了吧,计数的目的是啥?
确实,通过记录线程 ID(或线程标识)可以判断一个锁是否被某个线程持有。 但维护计数器并不是为了简单判断锁的持有者,而是为了支持可重入锁的完整语义。 这是因为: 1. 可重入锁需要支持嵌套调用 假设只记录线程 ID,而不维护计数器,来看一个嵌套调用的场景: 示例代码
2025-04-28
2
0
0
并发编程
2025-04-26
如何实现主线程捕获子线程异常?
在 Java 中,主线程无法直接捕获子线程抛出的异常,因为主线程与子线程是独立的执行单元,它们的执行是并行的。 子线程的异常通常在子线程内部处理,或者通过合适的机制传递给主线程。 不过,有几种方法可以实现主线程捕获子线程的异常: 1. 使用 Future 和 Callable Future 允许主线
2025-04-26
5
0
1
并发编程
2025-04-24
父子线程之间怎么共享传递数据?
在 Java 中,父子线程之间共享数据并不是直接支持的特性,需要通过特定的机制来实现。 以下是常见的方式及其原理。 1. 自定义传递机制 父线程在创建子线程时,可以通过构造函数或成员变量将需要共享的数据显式传递给子线程。 示例代码: class MyThread extends Thread {
2025-04-24
4
0
1
并发编程
2025-04-23
int a = 1 是原子性操作吗?
在 Java 中,int a = 1; 这条语句是 原子性 操作,但要区分 赋值操作 和 变量的可见性 在多线程环境中的影响。 1. int a = 1; 是否是原子操作? 是的,int a = 1; 在 Java 中是一个 原子性操作
2025-04-23
3
0
1
并发编程
2025-04-13
如何完成Java线程池的预热?
Java 线程池的预热(Warm-Up) 线程池预热 是指 在任务提交前,主动创建 核心线程,避免任务提交时触发 线程延迟创建,从而减少响应时间。 Java 默认情况下,线程池的核心线程是 懒加载(Lazy Load)的,只有在 任务提交后 才会创建线程。
2025-04-13
10
0
1
并发编程
2025-03-23
Java主内存和工作内存,主内存是指的堆吗?工作内存指的CPU缓存吗?
CPU 和内存的关系模型 在多核 CPU 和内存的环境中,CPU 和内存之间的交互是通过多级缓存和寄存器来实现的,而 JVM 的工作内存和主内存的设计,正是对这种底层计算模型的抽象。 我们来详细分析这个问题:
2025-03-23
12
0
1
Java
并发编程
2025-03-16
Volatile关键字为什么可以保证可见性?他是如何实现的?
volatile 关键字为什么可以保证可见性? volatile 关键字可以保证变量的可见性,是通过 主存和线程缓存的同步机制 实现的。 具体来说,它通过 内存屏障 和
2025-03-16
7
0
1
并发编程
2025-03-15
ReentrantLock如何实现可重入的?
ReentrantLock 实现可重入的原理主要基于以下几个核心点: 1. 可重入的定义 可重入锁允许同一线程多次获取同一把锁,而不会导致死锁。 例如,一个线程进入一个同步方法后,可以继续调用其他受相同锁保护的方法,而不需要再次等待。 2. ReentrantLock<
2025-03-15
11
0
1
并发编程
2025-03-11
CAS一定有自旋吗?
CAS 不一定需要自旋,但在大多数实现中,为了提高 CAS 操作的成功率,通常会采用自旋重试的方式。 具体情况如下: 1. CAS 的核心操作 CAS(Compare-And-Swap) 是一种硬件级的原子操作,用于比较内存中的值并在符合条件时更新它。 当 CAS 操作失败时,有以下几种处理方式:
2025-03-11
6
0
1
并发编程
2025-03-10
线程池是怎么实现线程的保活和停止管理的?
线程池的线程保活和停止管理实现原理 Java 中线程池(如 ThreadPoolExecutor)通过 线程保活 和 停止管理<
2025-03-10
11
0
1
并发编程