java基本教程之常用的实现多线程的两种方式 java多线程教程


在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的设计哲学,即优先使用接口而非继承。