Callable 接口是 Java 并发编程中用于表示可以由线程执行的任务的一种接口,它与 Runnable 接口类似,但功能更强大。
CPU飙高、接口变慢、内存泄漏,每一次都是手忙脚乱,一边翻Arthas命令手册,一边对着控制台输出猜问题。
设计并实现一个令牌桶。初始化时,需要初始化令牌桶的 最大容量和每秒生成令牌的数量。
先讲为什么:DeferredResult可以提升Servelt容器工作线程池的复用率。同时,也没有改变Servelt容器的最大物理连接数。如果新请求超过Serv...
虚拟线程不与特定操作系统线程绑定,而是在平台线程(载体线程)上运行Java代码,但在代码整个生命周期内不独占平台线程。多个虚拟线程可以在同一个平台线程上运行,共...
ABA问题是CAS操作中的一个经典问题,指的是:线程1从内存地址V中读取值A,此时线程2也读取了值A,然后线程2将V的值修改为B,接着又修改回A,最后线程1执行...
MySQL主从复制的核心是单主多从的流式日志同步架构,全链路由3个核心线程协同完成,分别是主库的Binlog Dump线程、从库的IO Thread与SQL T...
云原生架构的普及,对Java应用的启动速度、内存占用、弹性伸缩能力提出了全新要求。Spring Boot 3 作为Spring生态里程碑式的版本,基于Sprin...
过往版本中,虚拟线程的调试存在明显短板,设置断点后会暂停整个JVM的所有虚拟线程,无法针对单个虚拟线程进行调试,同时无法查看虚拟线程的调度状态。本次版本新增了虚...
线上服务突然CPU飙高100%、接口超时频发、FullGC每隔几分钟一次、线程死锁导致服务卡死、出现异常却没有打印日志,重启服务后问题消失却找不到根因,下次还会...
在Java 21之前,Java的Thread类是对操作系统内核线程的封装,也就是平台线程(Platform Thread),采用1:1的线程映射模型,一个Jav...
线程私有区域随线程创建而分配,随线程销毁而回收,不存在线程安全问题,每个区域的职责与异常边界完全独立。
这些问题的本质,都和CPU缓存、指令重排、多线程内存交互规则直接相关,而JMM(Java内存模型)正是Java官方定义的、用来规范多线程环境下内存交互行为的唯一...
这三个方法均基于ObjectMonitor实现:调用wait()会释放锁并将线程加入WaitSet队列,调用notify()会唤醒WaitSet中的线程,这些操...
CPU的运算速度比主存快了上千倍,为了提升性能,CPU引入了多级缓存、寄存器,编译器和CPU会对指令进行重排序优化。这就导致在多线程场景下,线程对变量的修改,其...
线程池是JUC中最常用的组件之一,用于“管理线程生命周期、复用线程、控制并发数”,避免频繁创建/销毁线程带来的性能开销。JUC中的线程池核心实现是ThreadP...
在分布式系统中,消息队列就像“交通枢纽”,承接生产者的消息、调度消费者的消费节奏,是解耦、削峰、异步通信的核心组件。但一旦出现“百万消息积压几小时”的问题,就相...
默认情况下,@Async使用的是Spring提供的SimpleAsyncTaskExecutor,该线程池的核心问题的是:每次执行异步任务都会创建一个新线程,不...
在Java并发编程中,线程池是控制线程生命周期、提升系统性能的核心组件,而单例模式则是确保实例唯一、避免资源浪费的经典设计模式。将两者结合,实现“线程池的单例模...
在使用工具之前,我们必须先搞懂:这些工具是如何与JVM交互,实现性能数据采集的?核心答案是 JMX(Java Management Extensions),即J...