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