在 Java 中,线程可以通过两种主要方式创建和调用

2025-05-06ASPCMS社区 - fjmyhfvclm

在 Java 中,线程可以通过两种主要方式创建和调用:继承 Thread 类和实现 Runnable 接口。此外,Java 8 引入的 lambda 表达式也使得线程的创建和使用更加简洁。以下是详细说明和示例:

1. 继承 Thread 类

通过继承 Thread 类并重写 run 方法,可以创建一个线程。

示例:

java

class MyThread extends Thread {

@Override

public void run() {

System.out.println("线程正在运行: " + Thread.currentThread().getName());

}

}

public class Main {

public static void main(String[] args) {

MyThread thread = new MyThread();

thread.start(); // 启动线程

}

}

2. 实现 Runnable 接口

通过实现 Runnable 接口并实现 run() 方法,可以将任务传递给 Thread 类来创建线程。

示例:

java

class MyRunnable implements Runnable {

@Override

public void run() {

System.out.println("线程正在运行: " + Thread.currentThread().getName());

}

}

public class Main {

public static void main(String[] args) {

Thread thread = new Thread(new MyRunnable());

thread.start(); // 启动线程

}

}

3. 使用 Lambda 表达式

在 Java 8 及更高版本中,可以使用 lambda 表达式简化 Runnable 接口的实现。

示例:

java

public class Main {

public static void main(String[] args) {

Thread thread = new Thread(() -> {

System.out.println("线程正在运行: " + Thread.currentThread().getName());

});

thread.start(); // 启动线程

}

}

注意事项

start() 方法:调用 start() 方法会启动一个新线程,并执行 run() 方法。不要直接调用 run() 方法,因为这不会启动新线程,而是在当前线程中执行。

线程生命周期:线程的生命周期包括新建、就绪、运行、阻塞、终止等状态。start() 方法将线程从新建状态转换为就绪状态,等待 CPU 调度执行。

线程安全:在多线程环境中,确保对共享资源的访问是线程安全的,可以使用同步机制(如 synchronized 关键字或 Lock 接口)。

通过上述方法,你可以在 Java 中创建并调用线程,从而实现并发编程。选择合适的方法取决于具体需求和设计风格。

全部评论