Java多线程实现2,实现Runnable接口

时间:2022-11-12 15:41:11

Java 程序只允许单一继承,即一个子类只能有一个父类。所以在Java中如果一个类继承了某一个类,同时又想采用多线程技术的时,就不能用继承Thread类的方式产生线程了,因为Java不允许多继承。这时就要用Runnable接口来创建线程了。采用实现Runnable接口方式实现多线程的大致步骤如下:

  1. 定义一个新的类实现Runnable接口,假设此类名为TestThread。
  2. 在TestThread类中实现run()方法,此方法即为新线程的运行程序代码。
  3. 创建TestThread类的对象t1,再以t1为参数创建Thread类的对象并调用此对象的start()方法。

下面是采用此方式实现多线程的一个示例:

public class ThreadDemo9_2
{
    public static void main(String args[])
    {
        TestThread t = new TestThread();
        new Thread(t).start();
        //循环输出
        for(int i = 0; i < 1000; i++)
        {
            System.out.println("main线程在运行");
        }
    }
}

class TestThread implements Runnable
{
    public void run()
    {
        for(int i = 0; i < 1000; i++)
        {
            System.out.println("TestThread在运行");
        }
    }
}

 

为什么实现了Runnable接口还需要调用Thread类中的start()方法才能启动多线程呢?读者通过查找JDK文档就可以发现,在Runnable接口中只有一个run()方法,并没有start()方法。所以一个类实现了Runnable接口也必须用Thread类中的start()方法来启动多线程。这点可以通过查找JDK文档中的Thread类发现,在Thread类之中,有这样一个构造方法:public Thread(Runnable target)
由此构造方法可以发现,可以将一个Runnable接口的实例化对象作为参数去实例化Thread类对象。在实际的开发中,应尽可能去使用Runnable接口去实现多线程机制。