排序
面试题:Java 中的 synchronized 轻量级锁是否会进行自旋?
在 Java 中,synchronized 的实现涉及到几种不同的锁状态,包括无锁状态、偏向锁、轻量级锁和重量级锁。这些状态之间的转换是根据运行时的并发情况动态调整的。 对于轻量级锁来说,它并不直接涉...
面试题:什么是 Java 的 StampedLock?
StampedLock 是 Java 8 引入的一种锁机制,位于 java.util.concurrent.locks 包中。 它提供了一种比传统的读写锁(如 ReentrantReadWriteLock)更灵活和高效的替代方案,特别适用于读操作远多于...
面试题:ThreadLocal 的缺点?
尽管 ThreadLocal 提供了线程本地存储的能力,使得每个线程可以拥有变量的一个独立初始化的副本,但它也存在一些缺点和潜在的问题: 1. 内存泄漏风险 类加载器相关的内存泄漏:如果 ThreadLocal...
面试题:什么是 Java 的 Semaphore?
Java 中的 Semaphore 是 java.util.concurrent 包提供的一个资源访问控制工具类,用于限制同时访问的线程数量,从而实现对共享资源的并发控制。它是基于 AQS(AbstractQueuedSynchronizer) 实...
面试题:什么是 Java 中的原子性、可见性和有序性?
在 Java 并发编程中,原子性(Atomicity)、可见性(Visibility)和有序性(Ordering) 是 Java 内存模型(Java Memory Model, 简称 JMM)中保障多线程程序正确执行的三大核心特性。它们分别解...
面试题:Java 线程安全的集合有哪些?
在Java中,线程安全的集合类主要分为两类:传统线程安全集合和现代并发集合。以下是常见的线程安全集合及其特点: 1. 传统线程安全集合 这些集合通过 synchronized 关键字或全局锁实...
面试题:你了解 Java 中的读写锁吗?
是的,Java 中的读写锁(ReadWriteLock)是一种并发控制机制,它允许多个线程同时读取共享资源,但写操作必须独占锁。这种设计在“读多写少”的场景下能显著提高并发性能。以下是关于 Java 中读...
面试题: 为什么在 Java 中需要使用 ThreadLocal?
在Java中,ThreadLocal 提供了一种线程局部变量的机制,这意味着每个使用某 ThreadLocal 变量的线程都有自己独立初始化的副本。这种机制有几个关键的应用场景和优势,解释了为什么在某些情况下...
面试题:什么是 Java 中的指令重排?
在Java中,指令重排(Instruction Reordering)是指编译器或处理器为了优化程序性能而对程序中的指令顺序进行调整的过程。 尽管这种重排通常不会改变单线程程序的行为,但在多线程环境下可能导...
面试题: Synchronized 能不能禁止指令重排序?
在 Java 中,Synchronized 关键字主要用于确保线程安全,它通过提供可见性和原子性来保证共享资源的正确访问。 关于 Synchronized 是否能禁止指令重排序,我们需要从 Java 内存模型(JMM, Java ...
