在上一小节中通过继承 Thread 类实现列多线程,但是这种方式有一定的局限性。因为 Java 中只支持单继承,一个类一旦继承了某个父类就无法再继承 Thread 类,例如学生类 Student 继承了 Person 类,就无法通过继承 Thread 类创建线程。

    为了克服这种弊端,Thread 类提供了另外一个构造方法 Thread(Runnable target) ,其中,Runnable 是一个接口,它只有一个 run()方法通过** _Thread(Runnable target))_构造方法创建线程对象时,只需为该方法传递一个实现了 Runnable 接口的实例对象,这样创建的线程将调用实现Runnable 接口中的_ run()_方法作为运行代码,而不需要调用 Thread 类中的 _run()_方法。**

    接下来通过一个案例来演示如果通过实现 Runnable 接口的方式来创建多线程,如下所示。

    1. public class example03 {
    2. public static void main(String[] args) {
    3. MyThread myThread = new MyThread(); //实例化对象
    4. Thread thread = new Thread(myThread); //创建线程对象,并传入参数
    5. thread.start(); //开启线程,执行线程中的 run()方法
    6. while (true) {
    7. System.out.println("main()方法在运行");
    8. }
    9. }
    10. }
    11. class MyThread implements Runnable{
    12. @Override
    13. public void run() { //线程的代码块,当调用 start()方法时,线程从此处开始执行
    14. while(true) {
    15. System.out.println("MyThread 类的 run()方法在运行");
    16. }
    17. }
    18. }

    运行结果如下所示。
    QQ截图20200708153855.png
    上述代码块中,MyThead 类实现了 Runnable 接口,并重写了 Runnable 中的 run()方法,通过 Thread 类的构造方法将 MyThread 类的实例对象作为参数传入。从运行结果可以看出,main()方法和 run()方法中的打印语句都执行了,说明上述代码块实现了多线程。