排序
面试题:Java 中线程之间如何进行通信?
在 Java 中,线程间的通信可以通过多种机制实现,以确保多个线程能够协调工作而不发生数据不一致或竞争条件的问题。以下是几种常见的线程间通信的方法: 1. 使用 wait(), notify() 和 notifyAll...
面试题:你使用过 Java 的累加器吗?
在 Java 中,“累加器”(Accumulator)通常指的是用于多线程环境下高效执行累加操作的并发工具类。Java 提供了多种方式来实现累加器,其中最常用的是: ✅ 一、AtomicInteger / AtomicLong 这...
面试题:Java 中什么情况会导致死锁?如何避免?
在Java中,死锁是指两个或多个线程处于互相等待的状态,每个线程都在等待其他线程释放资源,从而导致所有涉及的线程都无法继续执行。这种情况通常发生在多线程环境下,当线程需要同时获取多个锁...
面试题:什么是 Java 中的原子性、可见性和有序性?
在 Java 并发编程中,原子性(Atomicity)、可见性(Visibility)和有序性(Ordering) 是 Java 内存模型(Java Memory Model, 简称 JMM)中保障多线程程序正确执行的三大核心特性。它们分别解...
面试题:Java 线程安全的集合有哪些?
在Java中,线程安全的集合类主要分为两类:传统线程安全集合和现代并发集合。以下是常见的线程安全集合及其特点: 1. 传统线程安全集合 这些集合通过 synchronized 关键字或全局锁实...
面试题:什么是 Java 的 Semaphore?
Java 中的 Semaphore 是 java.util.concurrent 包提供的一个资源访问控制工具类,用于限制同时访问的线程数量,从而实现对共享资源的并发控制。它是基于 AQS(AbstractQueuedSynchronizer) 实...
面试题:什么是 Java 中的指令重排?
在Java中,指令重排(Instruction Reordering)是指编译器或处理器为了优化程序性能而对程序中的指令顺序进行调整的过程。 尽管这种重排通常不会改变单线程程序的行为,但在多线程环境下可能导...
面试题: Synchronized 能不能禁止指令重排序?
在 Java 中,Synchronized 关键字主要用于确保线程安全,它通过提供可见性和原子性来保证共享资源的正确访问。 关于 Synchronized 是否能禁止指令重排序,我们需要从 Java 内存模型(JMM, Java ...
面试题:Java 中 ReentrantLock 的实现原理是什么?
ReentrantLock 是 Java 并发包 java.util.concurrent.locks 中的一部分,提供了一种比同步方法和同步块更灵活的锁定机制。 它支持与隐式监视器锁(通过 synchronized 关键字实现)相同的互斥锁...
面试题:你了解 Java 中的读写锁吗?
是的,Java 中的读写锁(ReadWriteLock)是一种并发控制机制,它允许多个线程同时读取共享资源,但写操作必须独占锁。这种设计在“读多写少”的场景下能显著提高并发性能。以下是关于 Java 中读...
