在Java中,实现多线程主要有两种方式:继承`Thread`类和实现`Runnable`接口。下面分别给出这两种方式的简单示例:
### 1. 继承`Thread`类
通过继承`Thread`类来创建线程是最基本的一种方式。你需要创建一个继承自`Thread`类的子类,并重写其`run`方法。然后,你可以创建该子类的实例来创建新的线程。
// 继承Thread类
class MyThread extends Thread {
public void run() {
System.out.println("线程运行中:" + Thread.currentThread().getName());
}
}
public class ThreadExample {
public static void main(String[] args) {
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
t1.start(); // 启动线程
t2.start(); // 启动另一个线程
}
}
### 2. 实现`Runnable`接口
实现`Runnable`接口是另一种创建线程的方式,这种方式更加灵活,因为Java不支持多重继承,但可以实现多个接口。你需要创建一个实现了`Runnable`接口的类的实例,该接口包含一个`run`方法的声明。然后,你可以创建`Thread`类的实例,将`Runnable`实现类的实例作为构造器参数传递给`Thread`实例。
// 实现Runnable接口
class MyRunnable implements Runnable {
public void run() {
System.out.println("线程运行中:" + Thread.currentThread().getName());
}
}
public class RunnableExample {
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable());
Thread t2 = new Thread(new MyRunnable());
t1.start(); // 启动线程
t2.start(); // 启动另一个线程
}
}
这两种方式各有优缺点,但通常推荐实现`Runnable`接口的方式,因为它更加灵活,特别是当你需要让你的类继承另一个类时(Java不支持多重继承)。此外,使用`Runnable`接口的方式也更加符合Java的设计哲学,即优先使用接口而非继承。