1 为什么不能随意创建线程 在并发程序的早期阶段,最常见的写法是直接创建线程: new Thread(() -> { // 执行任务 }).start(); 这种方式在功能上没有问题,但在工程层面存在严重隐患。 第一,线程创建和销毁成本高。线程不仅占用内存,还需要操作系统调度,频繁创建会严
1 为什么需要并发容器 在多线程程序中,共享数据结构几乎不可避免。最直观的做法,是在普通容器外层加锁: Map<String, Object> map = new HashMap<>(); synchronized (map) { map.put(key, value); } 这种方式在
1 synchronized 边界 在使用 synchronized 的过程中,开发者往往会逐渐遇到几个无法绕开的问题。 第一,线程在等待锁的过程中无法被中断。一旦线程进入 BLOCKED 状态,除非获得锁,否则无法响应中断信号,这在需要快速取消任务的系统中是不可接受的。 第二,无法限制等待时间。s
1. 正则表达式简介 1.1 什么是正则表达式 正则表达式(Regular Expression,简称 Regex)是一种用于 描述字符串模式的工具。不是简单的字符串匹配,而是用 规则和模式 来定义哪些字符串是“符合要求”的。 用途举例: 校验文本格式:手机号、邮箱、身份证、邮编等 搜索文本:文章关
1 synchronized 的三种使用方式 synchronized 是 Java 最基础、最安全的同步方案,它使用 对象内置锁(Monitor Lock) 来保证多个线程访问临界区时的互斥性。 1.1 修饰实例方法 写法: public synchronized void m() { c
1 线程安全与同步机制 线程安全是指在多线程环境下,多个线程对共享资源进行访问时,不会发生数据不一致或竞争条件的现象。为了保证线程安全,通常需要通过同步机制来控制对共享资源的访问,确保在任何时刻只有一个线程能访问该资源。 1.1 线程安全的定义 线程安全指的是在多线程并发执行的情况下,多个线程对同一
1 Java 内存模型(JMM)与可见性 Java 内存模型(Java Memory Model,简称 JMM)是 Java 为了保证多线程程序中线程间共享变量的可见性、原子性和有序性而设计的一套规范。JMM 定义了多个线程共享数据时如何在不同的线程之间传递变量的值,以及哪些操作可以在多线程环境下被
1 什么是进程与线程 1.1 进程(Process) 1.1.1 进程的定义 进程是操作系统进行资源分配的基本单位。当一个程序被启动后,操作系统会为这个程序分配独立的系统资源,这些资源包括内存空间、文件句柄、网络端口等。 例如:运行一段 Java 程序时,启动 Java 虚拟机(JVM),JVM 就
Java 8 的 Stream API 是处理集合数据的函数式编程工具,提供高效、声明式的数据处理能力。以下是核心概念和用法详解: 1. 核心特点 声明式编程:描述"做什么"而非"如何做" 不修改源数据:生成新数据流 惰性求值:中间操作延迟执行,终端操作触发计算 可并行化:parall
核心启动与配置 @SpringBootApplication: 作用:标记在主启动类上。它是三个关键注解的组合: @SpringBootConfiguration: 表明该类是一个 Spring Boot 的配置类(继承自 @Configuration)。 @EnableAutoConfigur