Java 多线程/并发

发布: (2026年1月18日 GMT+8 14:04)
3 min read
原文: Dev.to

Source: Dev.to

什么是 Java 中的多线程?

Java 中的多线程是一种特性,允许程序的两个或多个部分(称为 线程)并发执行,以最大化 CPU 利用率。每个线程可以与其他线程并行运行,共享同一内存空间。

关键概念

  • 线程 – 轻量级子进程,处理的最小单元。一个进程中可以存在多个线程。
  • 并发 vs. 并行
    • 并发 – 多个线程在单个 CPU 核心上交错进行。系统在线程之间切换,产生同时执行的幻觉。
    • 并行 – 多个线程在不同的 CPU 核心上同时运行,实现真正的并行执行。
  • 主要目的
    • 性能 – 在多核处理器上并行执行 CPU 密集型任务,加快执行速度。
    • 响应性 – 保持应用程序的响应能力;长时间运行的任务(例如网络请求或文件下载)可以在后台线程中运行,而不会冻结 UI。

如何在 Java 中创建线程

创建线程主要有两种方式。

实现 Runnable 接口(推荐)

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread is running by implementing Runnable.");
    }
}

// To start the thread:
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();

继承 Thread

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread is running by extending Thread.");
    }
}

// To start the thread:
MyThread thread = new MyThread();
thread.start();

线程状态

在 Java 中,线程可以处于以下几种状态,这些状态在 java.lang.Thread.State 中定义:

  • NEW – 线程已创建但尚未启动。

  • RUNNABLE – 线程正在 JVM 中执行(当前正在运行或已准备好运行,等待调度器选择)。

  • BLOCKED – 线程正在等待获取监视器锁,以进入同步块或方法。

  • WAITING – 线程无限期等待另一个线程执行特定操作。它通过以下调用进入此状态:

    Object.wait();               // no timeout
    Thread.join();               // no timeout
    LockSupport.park();
  • TIMED_WAITING – 线程在等待指定的时间段。它通过调用带超时的方式进入此状态,例如:

    Thread.sleep(long millis);
    Object.wait(long timeout);
    Thread.join(long millis);
    LockSupport.parkNanos(long nanos);
    LockSupport.parkUntil(long deadline);
  • TERMINATED – 线程已完成执行,无论是正常结束 run() 方法还是因未捕获的异常而终止。

Back to Blog

相关文章

阅读更多 »

SC #3:与 Swift 6 的关系

Swift Concurrency 3 部分系列 https://dev.to/david_goyes_a488f58a17a53/series/35092 “Swift Concurrency” 是 Swift 6 的基石,然而,Swift 6 的定义……