本专栏作者为 10 年+ 程序员、系统架构师、面试官,7 年写作经验,全网粉丝 50w+,「Spring Boot 核心技术与最佳实践」作者。 本专栏主要分享一线大厂 Java 面试题,主要包括 Java 基础、集合、IO、JVM、多线程等 Java 核心技术面试题。 前 500 人订阅享内测特惠价 10 元(永久买断),学会任何一点都能值回票价,满 500 人价格调整至 19.9 元。 订阅后,加作者微信「160285345」备注:100,并发送订阅截图,可免费领取 10 套程序员精美简历模板。
100. 为什么不推荐使用 stop 停止线程?如何优雅地终止一个线程?
我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。
我们知道启动一个线程是 start 方法,自然有一个对应的终止......
99. 什么是 Happens-Before 原则?有哪些原则?
Happens-Before 原则用来指定两个操作之间的执行顺序,由于这两个操作可以在一个线程之内,也可以在不同线程之间,因此,JMM 通过 Happens-Before 原则来保证跨线程的内存......
98. CountDownLatch 与 CyclicBarrier 的区别?
CountDownLatch:
计数器:计数器只能使用一次。
等待:一个线程或多个等待另外 n 个线程完成之后才能执行。
......97. volatile 关键字有什么用?有哪些应用场景?
volatile 是 Java 中的一个关键字,只能用于修饰一个成员变量,如:
private volatile int bal......96. ThreadLocal 有什么用?底层实现是?
ThreadLocal 可以理解成线程本地变量,一般多个线程(Thread)对一个变量操作时,它操作的是同一个对象,也存在线程安全的问题,而使用 ThreadLocal 设置和获取的变量则是和当......
95. Java 里面有哪些内置的线程池?
Executors 是创建线程池的工厂类,它提供了几种常用的线程池工厂方法,而不必我们去手工构造:
1、newFixedThreadPool
publ......94. 线程池的工作流程是怎样的?
线程池工作流程如下图所示:
1)如果线程池中的线程小于核心线程数 corePoolSize 时,则创建新线程直接执行任务。
2)如果线程池中的线程大于核心线......
93. 什么是线程池?有哪些核心参数?
很简单,简单看名字就知道,和连接池的概念一样,线程池它是一个装有线程的池子,我们可以把要执行的多个线程交给线程池来处理,通过维护一定数量的线程池来达到多个线程的复用,而不用反复创建线程,节省系统......
92. 什么是锁升级?锁升级的过程是怎样的?
在 JDK 1.6 之前,synchronized 还是一个重量级锁,效率比较低下,JDK 1.6 之后,JVM 对 synchronized 锁进行了优化,引入了偏向锁和轻量级锁,自此锁的状态......
91. 什么是重入锁?你怎么理解重入?
重入锁(Reentrant Lock)是一种高级的同步机制,用于控制多个线程对共享资源的访问,它允许同一个线程多次获得同一个锁,从而实现锁的重入特性,所以叫做重入锁。
......