排序
面试题:Java 中的 HashMap 和 Hashtable 有什么区别?
在 Java 中,HashMap 和 Hashtable 都是基于哈希表实现的集合类,用于存储键值对(key-value pairs)。尽管它们有相似之处,但在多个方面存在显著差异。以下是两者的主要区别: 1. 线程安全性 H...
面试题:什么是 Java 内存模型(JMM)?
Java内存模型(Java Memory Model,简称JMM)是Java语言规范中定义的一种抽象概念,它描述了程序中各个线程如何通过内存进行交互。 JMM的目标是在不同的硬件架构和操作系统之上提供一个一致的内...
面试题:Java 并发库中提供了哪些线程池实现?它们有什么区别?
Java 并发库(java.util.concurrent 包)提供了多种线程池实现,这些实现通过 Executors 工厂类提供便捷的创建方法。以下是几种常见的线程池类型及其特点和适用场景: 1. FixedThreadPool 创建...
面试题:什么是三色标记算法?
三色标记算法(Three-Color Marking Algorithm)是垃圾收集器中用于追踪和管理对象可达性的一种方法。 它主要用于支持并发或增量式垃圾收集,允许垃圾收集过程与应用程序的执行并行进行而不必完...
面试题:如果一个线程在 Java 中被两次调用 start() 方法,会发生什么?
直接答案 会抛出 IllegalThreadStateException 异常。在 Java 中,一个线程对象只能被启动(start)一次,重复调用 start() 方法是非法操作。 详细解释 1. 线程生命周期状态 线程在被...
面试题:为什么 Java 不支持多重继承?
Java 设计时决定不支持多重继承,主要是为了避免由多重继承带来的复杂性和潜在的问题。虽然多重继承在某些情况下看起来很有吸引力,因为它允许一个类从多个基类继承方法和字段,但它也引入了一...
面试题:Java 创建线程池有哪些方式?
在Java中,创建线程池主要通过 java.util.concurrent 包下的 Executors 工具类和直接实例化 ThreadPoolExecutor 或 ScheduledThreadPoolExecutor 来实现。以下是几种常见的创建线程池的方式: 1...
面试题:Java 的 synchronized 是怎么实现的?
Java 的 synchronized 关键字提供了一种简单而强大的机制来确保线程安全,它通过隐式的方式实现对象或类级别的锁控制。以下是 synchronized 实现机制的详细解释: 1. 锁的对象 实例方法:当 syn...
面试题:如何在 Java 中进行内存泄漏分析?
在 Java 中进行内存泄漏分析是确保应用程序高效运行的重要步骤。Java 的自动垃圾回收机制虽然减轻了开发者手动管理内存的负担,但并不能完全避免内存泄漏问题。以下是几种常用的内存泄漏分析方...
面试题:你了解 Java 的类加载器吗?
类加载器是 Java 虚拟机(JVM)的一个核心组成部分,负责在程序运行时动态地将 .class 文件(字节码)加载到 JVM 中,并将其转换为 Java 的 java.lang.Class 对象。 类加载器使得 Java 能够在运...
