多线程04-线程创建第二种

创建多线程的第二种方式:实现Runnable接口

采用java.lang.Runnable也是一种非常建的一种,我们只要重写run方法即可

步骤如下;

1定义Runnable接口的实现类,并重写该接口的run方法,该run方法的方法体同样是该线程的执行体

2创建Runable实现类实例,在创建Thread对象,构造方法传递Runnable接口的实现类对象(并以此实例作为Thread的target来创建Thread对象),该Thread对象才是真正的线程对象

3调用线程对象的start方法启动线程

7.继承Thread类和实现Runnable接口的区别

实现Runnable接口创建多线程程序的好处:

1避免了单继承的局限性

  一个类只能继承一个类(一个人只能有一个亲爹),类继承了Thread就不能继承其他类了

  实现了Runnable接口,还可以继承其他类,实现其他的接口

2增强了程序的扩展性,降低了程序的耦合性

  实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离

  实现类中,重写run方法用来设置线程任务,创建Thread类对象,调用start方法开启新线程

首先,创建Runnable接口的实现类RunnableImp1:

package demo04Thread2;
//1创建Runnable接口的实现类
public class RunnableImp1 implements Runnable {
    //2在实现类中重写Runnable接口的run方法
    @Override
    public void run() {
        for (int i = 0; i <20 ; i++) {
            System.out.println(Thread.currentThread().getName()+"---"+i);
        }
    }
}

在创建一个实现类RunnableImp2,开启不同的任务:

package demo04Thread2;
//1创建Runnable接口的实现类
public class RunnableImp2 implements Runnable {
    //2在实现类中重写Runnable接口的run方法
    @Override
    public void run() {
        for (int i = 0; i <20 ; i++) {
            System.out.println("HellowWorld!");
        }
    }
}

再创建demRunnable类:

package demo04Thread2;

public class demRunnable  {
    public static void main(String[] args) {
        //3创建一个Runnable接口的实现类对象
        RunnableImp1 run=new RunnableImp1();
        //4创建Thread类对象,构造方法中传递Runnable接口的实现类对象
        Thread m=new Thread(run);//打印线程名称
        m.start();

        //设置线程任务和开启新线程进行分离,传递不同的实现类,实现不同的任务
        Thread t=new Thread(new RunnableImp2());//打印HellowWorld
        //5.调用Thread类中start方法,开启新线程run方法
        t.start();

        for (int i = 0; i <20 ; i++) {
            System.out.println(Thread.currentThread().getName()+"---"+i);
        }
    }
}

结果:

 

你可能感兴趣的:(java基础知识,java,开发语言)