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()方法还是因未捕获的异常而终止。