synchronized 作用于静态方法 当 synchronized 关键字作用于静态方法上时,是对这个类的 Class 对象加锁,意味着当一个线程进入这个静态同步方法时,其他试图访问这个类中任何其他 synchronized 静态方法的线程都将被阻塞,直到第一个线程退出该方法。 如果一个类中有多
如何理解 AQS ? AQS(AbstractQueuedSynchronizer) 是 Java 并发包(java.util.concurrent)的核心基础框架,用于构建锁和其他同步器(如 ReentrantLock、Semaphore、CountDownLatch 等)。它通过 FIFO 队列
什么是 CAS? CAS(Compare And Swap,比较并交换)是并发编程中一种 无锁(Lock-Free) 的原子操作机制,用于在多线程环境下实现数据的安全更新。它通过硬件指令直接支持,避免了传统锁机制的开销,是现代高性能并发库(如 Java 的 Atomic 类)的核心实现基础。 CAS
Volatile 能保证原子性吗?为什么? Volatile 不能保证原子性。 volatile 关键字在 Java 中主要解决 可见性 和 有序性 问题: 可见性:对 volatile 变量的写操作会立即刷新到主内存,且读操作会直接从主内存读取最新值,确保其他线程能立即看到修改。
什么是线程池? 线程池是池化技术的一种典型实现,所谓池化技术就是提前保存大量的资源,以备不时之需。在机器资源有限的情况下,使用池化技术可以大大的提高资源的利用率,提升性能等。 线程池,说白了就是提前创建好的一批线程,保存在线程池中,当有任务需要执行的时候,从线程池中选一个线程来执行任务。 在编程领域
@Autowired 注解 Spring 中 @Autowired 注解默认根据类型来匹配 Bean ,如果上下文中存在一个以上匹配类型的 Bean ,Spring 将无法决定应该注入哪一个,并抛出异常。可以通过 @Qualifier 注解来进一步指定具体要注入哪个Bean。 @Autowired
开票 客户下订单,下单流程走完后,要到仓库生成销售出库单,然后物流把货送到客户手上,客户确认没有问题、签收、打款后,根据销售出库单开具发票。 蓝票传金税流程 根据业务单据 id 查询出销售发票详情
什么是多线程的上下文切换? 上下文切换是指 CPU 从一个线程转到另外一个线程时,需要保存当前线程的上下文状态,恢复另一个线程的上下文状态,以便于下一次恢复执行该线程时能够正确的运行。 在多线编程中,上下文切换是一种常见的操作,上下文切换通常是指在一个 CPU 上,由于多个线程共享 CPU 时间片,
JVM的运行时内存区域是怎样的? 根据 Java 虚拟机规范的定义,JVM 的运行时内存区域主要由 Java 堆、虚拟机栈、本地方法栈、方法区和程序计数器以及运行时常量池组成。其中堆、方法区以及运行时常量池是线程之间共享的区域,而栈(本地方法栈+虚拟机栈)、程序计数器都是线程独享的。 程序计数器:一
依赖注入 DI(Dependency Injection) DI 是Dependency Injection(依赖注入)的缩写。它是一种设计模式,用于减少代码之间的耦合度,使代码更易于测试、维护和扩展。 在传统的编程中,一个对象通常会自行创建它所依赖的其他对象。而依赖注入通过将依赖关系从代码中分离出