排序
面试题:什么是 Java 的 StampedLock?
StampedLock 是 Java 8 引入的一种锁机制,位于 java.util.concurrent.locks 包中。 它提供了一种比传统的读写锁(如 ReentrantReadWriteLock)更灵活和高效的替代方案,特别适用于读操作远多于...
面试题:如果一个线程在 Java 中被两次调用 start() 方法,会发生什么?
直接答案 会抛出 IllegalThreadStateException 异常。在 Java 中,一个线程对象只能被启动(start)一次,重复调用 start() 方法是非法操作。 详细解释 1. 线程生命周期状态 线程在被...
面试题:ThreadLocal 的缺点?
尽管 ThreadLocal 提供了线程本地存储的能力,使得每个线程可以拥有变量的一个独立初始化的副本,但它也存在一些缺点和潜在的问题: 1. 内存泄漏风险 类加载器相关的内存泄漏:如果 ThreadLocal...
面试题:说说 AQS 吧?
当然可以,AQS(AbstractQueuedSynchronizer) 是 Java 并发包 java.util.concurrent(简称 JUC)中非常核心的一个抽象类,是构建各种同步器(如 ReentrantLock、Semaphore、CountDownLatch、Re...
面试题:Java 中的字节码是什么?
在Java中,字节码(Bytecode)是一种介于源代码和机器码之间的中间表示形式,它不是特定于任何一种硬件架构或操作系统,而是针对Java虚拟机(JVM)的一种低级代码。当你编写完Java程序后,通过...
面试题:数组和链表在 Java 中的区别是什么?
数组和链表是两种基础的数据结构,在 Java 中它们有着不同的特性和使用场景。以下是数组和链表的主要区别: 1. 数据存储方式 数组:在内存中是连续存储的,这意味着每个元素都紧挨着前一个元素...
面试题:Java 中线程之间如何进行通信?
在 Java 中,线程间的通信可以通过多种机制实现,以确保多个线程能够协调工作而不发生数据不一致或竞争条件的问题。以下是几种常见的线程间通信的方法: 1. 使用 wait(), notify() 和 notifyAll...
面试题:Java 中如何判断对象是否是垃圾?不同实现方式有何区别?
在Java中,判断对象是否为垃圾(即不再被使用的对象)主要是通过垃圾收集器来完成的。垃圾收集器会自动追踪哪些对象是可达的,并回收那些不可达的对象所占用的内存空间。 判断对象是否为垃圾的...
面试题:你使用过 Java 的累加器吗?
在 Java 中,“累加器”(Accumulator)通常指的是用于多线程环境下高效执行累加操作的并发工具类。Java 提供了多种方式来实现累加器,其中最常用的是: ✅ 一、AtomicInteger / AtomicLong 这...
面试题:你了解 Java 的 ZGC(Z Garbage Collector)吗?
ZGC,全称Z Garbage Collector,是自Java 11引入的一种可扩展的低延迟垃圾收集器。它的设计目标主要是为了满足大堆内存(多TB级别)的需求,同时保持非常低的停顿时间(通常在几毫秒内),从而...
