← 返回首页

Java 并发编程核心概念

Java 并发编程核心概念

并发编程是 Java 开发中的高级主题。本文基于 Java 21 讲解核心概念。

一、线程基础

创建线程的三种方式

// 1. 继承 Thread 类
class MyThread extends Thread {
    public void run() {
        System.out.println("Thread running");
    }
}

// 2. 实现 Runnable 接口 class MyRunnable implements Runnable { public void run() { System.out.println("Runnable running"); } }

// 3. 实现 Callable 接口(有返回值) class MyCallable implements Callable { public String call() { return "Result"; } }

二、线程池

为什么使用线程池

  • 减少线程创建和销毁的开销
  • 提高响应速度
  • 提高线程的可管理性

ThreadPoolExecutor 核心参数

ThreadPoolExecutor executor = new ThreadPoolExecutor(
    4,              // corePoolSize: 核心线程数
    8,              // maximumPoolSize: 最大线程数
    60L,            // keepAliveTime: 空闲线程存活时间
    TimeUnit.SECONDS,
    new ArrayBlockingQueue<>(100),
    Executors.defaultThreadFactory(),
    new ThreadPoolExecutor.CallerRunsPolicy()
);

三、锁机制

synchronized vs ReentrantLock

  • synchronized: JVM 层面,自动释放
  • ReentrantLock: API 层面,手动释放,支持公平锁

四、原子操作

AtomicInteger atomicInt = new AtomicInteger(0);
atomicInt.incrementAndGet(); // 原子自增
atomicInt.compareAndSet(0, 1); // CAS 操作

五、Java 21 虚拟线程

Thread.startVirtualThread(() -> {
    System.out.println("Virtual thread running");
});

六、最佳实践

  1. 优先使用线程池
  2. 使用并发工具类代替 wait/notify
  3. 避免死锁:按固定顺序获取锁
  4. 使用不可变对象减少锁竞争