enyang

Java 多线程<7>——线程池原理与参数设计

1 为什么不能随意创建线程 在并发程序的早期阶段,最常见的写法是直接创建线程: new Thread(() -> { // 执行任务 }).start(); 这种方式在功能上没有问题,但在工程层面存在严重隐患。 第一,线程创建和销毁成本高。线程不仅占用内存,还需要操作系统调度,频繁创建会严

enyang Published on 2026-01-18

Java 多线程<6>——并发容器与 CAS

1 为什么需要并发容器 在多线程程序中,共享数据结构几乎不可避免。最直观的做法,是在普通容器外层加锁: Map<String, Object> map = new HashMap<>(); synchronized (map) { map.put(key, value); } 这种方式在

enyang Published on 2026-01-13

Java 多线程<5>——Lock 体系与并发控制

1 synchronized 边界 在使用 synchronized 的过程中,开发者往往会逐渐遇到几个无法绕开的问题。 第一,线程在等待锁的过程中无法被中断。一旦线程进入 BLOCKED 状态,除非获得锁,否则无法响应中断信号,这在需要快速取消任务的系统中是不可接受的。 第二,无法限制等待时间。s

enyang Published on 2026-01-12

正则表达式<1>——正则基础

1. 正则表达式简介 1.1 什么是正则表达式 正则表达式(Regular Expression,简称 Regex)是一种用于 描述字符串模式的工具。不是简单的字符串匹配,而是用 规则和模式 来定义哪些字符串是“符合要求”的。 用途举例: 校验文本格式:手机号、邮箱、身份证、邮编等 搜索文本:文章关

enyang Published on 2025-12-31

SOLID 五大设计原则

SOLID 五原则用于指导面向对象设计,目标是让系统: 更易扩展(Extensible) 更易维护(Maintainable) 更易测试(Testable) 更松耦合(Loosely Coupled) 更清晰(Clean & Understandable) SOLID 包含五条原则: S — 单一职

enyang Published on 2025-12-06

Java 多线程<4>——锁机制与 synchronized

1 synchronized 的三种使用方式 synchronized 是 Java 最基础、最安全的同步方案,它使用 对象内置锁(Monitor Lock) 来保证多个线程访问临界区时的互斥性。 1.1 修饰实例方法 写法: public synchronized void m() { c

enyang Published on 2025-12-06

Java多线程<3>——线程安全与同步机制

1 线程安全与同步机制 线程安全是指在多线程环境下,多个线程对共享资源进行访问时,不会发生数据不一致或竞争条件的现象。为了保证线程安全,通常需要通过同步机制来控制对共享资源的访问,确保在任何时刻只有一个线程能访问该资源。 1.1 线程安全的定义 线程安全指的是在多线程并发执行的情况下,多个线程对同一

enyang Published on 2025-12-05

Java 多线程<2>——内存模型与可见性

1 Java 内存模型(JMM)与可见性 Java 内存模型(Java Memory Model,简称 JMM)是 Java 为了保证多线程程序中线程间共享变量的可见性、原子性和有序性而设计的一套规范。JMM 定义了多个线程共享数据时如何在不同的线程之间传递变量的值,以及哪些操作可以在多线程环境下被

enyang Published on 2025-12-05

Java多线程<1>——多线程基础

1 什么是进程与线程 1.1 进程(Process) 1.1.1 进程的定义 进程是操作系统进行资源分配的基本单位。当一个程序被启动后,操作系统会为这个程序分配独立的系统资源,这些资源包括内存空间、文件句柄、网络端口等。 例如:运行一段 Java 程序时,启动 Java 虚拟机(JVM),JVM 就

enyang Published on 2025-12-05

LeetCode_128.最长连续序列

1. 题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它

enyang Published on 2025-11-28
Previous Next