排序
面试题:什么是 Java 的 CAS(Compare-And-Swap)操作?
CAS(Compare-And-Swap) 是一种并发编程中的原子操作,用于实现无锁的线程安全操作。它是现代多核处理器提供的一种硬件指令,Java 通过 sun.misc.Unsafe 类或 java.util.c...
面试题:Java 中 volatile 关键字的作用是什么?
volatile 是 Java 中的一个关键字,用于修饰变量,主要作用是保证变量的可见性和禁止指令重排序。它在多线程编程中非常重要,尤其是在需要共享变量的场景中。 1. volatile 的作用 (1...
面试题:Java 中使用 ThreadLocal 的最佳实践是什么?
ThreadLocal 是 Java 中用于实现线程本地存储的强大工具,但如果使用不当,可能会导致内存泄漏或其他问题。以下是使用 ThreadLocal 的最佳实践: 1. 显式调用 remove(...
面试题:说说 AQS吧?
AQS(AbstractQueuedSynchronizer) 是 Java 并发编程中的一个核心框架,位于 java.util.concurrent.locks 包中。它是构建锁和其他同步工具(如 ReentrantLock、CountDownLatch、Semaphore 等)...
面试题:Java 中的 synchronized 轻量级锁是否会进行自旋?
是的,Java 中的 synchronized 轻量级锁在竞争时会进行 自旋。 1. 轻量级锁的背景 轻量级锁是 JVM 为了减少线程阻塞和上下文切换的开销而引入的一种优化机制。它的核心思想是:当多个线程竞争锁...
面试题:为什么 Java 中的 ThreadLocal 对 key 的引用为弱引用?
在 Java 的 ThreadLocal 实现中,ThreadLocalMap 使用弱引用(WeakReference)来引用 ThreadLocal 对象作为键(key)。这种设计主要是为了解决内存泄漏问题,以下是具体原因和机制: 1. 弱引用...
面试题:什么是 Java 的 StampedLock?
StampedLock 是 Java 8 引入的一种新的锁机制,位于 java.util.concurrent.locks 包中。它提供了三种模式的锁控制:写锁、悲观读锁和乐观读锁。StampedLock 的设计旨在提供更高的并发性能,尤其...
面试题:你了解时间轮(Time Wheel)吗?有哪些应用场景?
时间轮(Time Wheel)是一种高效的定时任务调度算法,常用于实现延迟任务或周期性任务的调度。它的核心思想是通过一个循环数组(类似于时钟的表盘)来表示时间,每个槽(slot)代表一个时间间隔...
面试题:Java 中如何创建多线程?
在 Java 中,创建多线程主要有以下几种方式: 1. 继承 Thread 类 通过继承 Thread 类并重写 run() 方法来创建线程。 步骤: 创建一个类并继承 Thread。 重...
面试题:在 Java 中主线程如何知晓创建的子线程是否执行成功?
在 Java 中,主线程可以通过多种方式知晓创建的子线程是否执行成功。以下是几种常见的实现方式: 1. 使用 Thread.join() 方法 作用:主线程调用子线程的 join() 方法,等待子...