创建多线程程序的第二种方式-实现Runnable接口和Thread和Runnable的区别

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

java.lang. Runnable也是非吊军儿的一种,我们只需要重与run万法即可。

步骤如下∶

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

  ⒉创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。

  3.调用线程对象的start()方法来启动线程。

public class Demo_Runnable implements Runnable{
    @Override
    public void run() {
        for(int i = 0; i < 20; i++){
            System.out.println(Thread.currentThread().getName()+"--》"+i);
        }
    }
}
public static void main(String[] args) {
        Demo_Runnable demo_runnable = new Demo_Runnable();
        Thread thread = new Thread(demo_runnable);

        thread.start();

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

        }

    }

// 创建线程2: 实现Runnable接口,重写run()方法,执行线程需要丢入的runnable接口实现类,调用start()方法。
public class TestThread3 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            // run方法线程体
            System.out.println("我在看代码-----" + i);
        }
    }

    public static void main(String[] args) {
        // 创建Runnable接口的实现类对象
        TestThread3 testThread3 = new TestThread3();
        // 创建线程,对象通过线程对象开启线程
//        Thread thread = new Thread(testThread3);
//        thread.start();

        new Thread(testThread3).start();
        
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程-----" + i);
        }
    }
}

 

Thread和Runnable的区别

实现Runnable接口比继承Thread类所具有的优势

  1.适合多个相同的程序代码的线程去共享同一个资源。

  2.可以避兔java中的单继承的局限性。

  3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。

  4.线程池只能放入实现Runable或Callable类线程,不能直接放入继承Thread的类。

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

  1.避免了单继承的局限性

    一个类只能继承一个类(士一个人只能有一个亲爹),类继承了Thread类就不能继承其他的类实现了Runnable接口,还可以继承其他的类,实现其他的接口

  2.增强了程序的扩展性,降低了程序的耦合性(解耦)

    实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)实现类中,重写了run方法:用来设置线程任务

    创建Thread类对象,调用start方法:用来开启新线程

public class Demo_Runnabl implements Runnable{
    @Override
    public void run() {
        for(int i = 0; i < 20; i++){
            System.out.println("HelloWord"+i);
        }
    }
}
public static void main(String[] args) {
        Demo_Runnable demo_runnable = new Demo_Runnable();

        //Thread thread = new Thread(demo_runnable);
        Thread thread = new Thread(new Demo_Runnabl());

        thread.start();

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

        }

    }

 

posted @ 2022-07-07 15:05  漁夫  阅读(48)  评论(0)    收藏  举报