多线程实现 - 实现Runnable接口

1. 接口中的方法

2. Thread类构造方法

3. 实现Runnable的原理

实现Runnable接口,避免了继承Thread类的单继承局限性。覆盖Runnable接口中的run方法,将线程任务代码定义到run方法中。

创建Thread类的对象,只有创建Thread类的对象才可以创建线程。线程任务已被封装到Runnable接口的run方法中,而这个run方法所属于Runnable接口的子类对象,所以将这个子类对象作为参数传递给Thread的构造函数,这样,线程对象创建时就可以明确要运行的线程的任务。

4. 简单的实现

  • 定义类实现Runnable接口。
  • 覆盖接口中的run方法。
  • 创建Thread类的对象。
  • 将Runnable接口的子类对象作为参数传递给Thread类的构造函数。
  • 调用Thread类的start方法开启线程。
public class RunnableServiceImpl implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 3; i++) {
            System.out.println("我的线程:正在执行!"+i);
        }
    }
}
public class RunnableController {
    public static void main(String[] args) {
        //创建线程执行目标类对象
        RunnableServiceImpl runnableService = new RunnableServiceImpl();
        //将Runnable接口的子类对象作为参数传递给Thread类的构造函数
        Thread thread = new Thread(runnableService);
        Thread thread2 = new Thread(runnableService);

        //开启线程
        thread.start();
        thread2.start();

        for (int i = 0; i < 3; i++) {
            System.out.println("main线程:正在执行!"+i);
        }
    }
}