前面一篇介绍了多线程的实现方式之一是利用Thread类的子类对象去调用start()方法,这篇,介绍实现多线程的第二种方式。那就是,创建线程的另一种方法是声明实现 Runnable
接口的类。该类然后实现 run
方法。然后可以分配该类的实例,在创建 Thread
时作为一个参数来传递并启动。
1 查询Runnable接口
搜索并打开Runnable接口,发现只有一个Run方法,Run方法的作用是:使用实现接口 Runnable
的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run
方法。方法 run
的常规协定是,它可能执行任何所需的动作。所以,我们定义一个类去实现Runnable,然后重写run()方法就可以。
2.具体代码实现
package thread;
public class Demo2_Thread {
public static void main(String[] args) {
MyRunnable mr = new MyRunnable(); //4.创建Runnable子类对象
//Runnable target = mr;
Thread t = new Thread(mr); //5.将其当做参数传递给Thread构造函数
t.start(); //6.开启线程
for (int i = 0; i < 1000; i++) { //作为参照的另外的线程
System.out.println("bbbbb");
}
}
}
class MyRunnable implements Runnable { //1.定义一个类实现runnable
@Override
public void run() { //2.重写run方法
for (int i = 0; i < 1000; i++) { //3.将要执行代码写在run方法中
System.out.println("aaaaa");
}
}
}
运行一下,肯定可以看到a和b交替输出效果。注意看我们备注的1到6步骤和注解。这个就是利用Thread的构造参数可以传入一个Runnable接口的具体实现类的子类对象这个特点,最终还是通过Thread的实例对象去调用start()方法去开启线程。