Java中启动线程start和run方法的区别

痴心易碎 提交于 2020-02-28 13:48:24

         Java中启动线程有两种方式,继承Thread类以及实现接口Runnable,由于Java无法实现多重继承,故经常通过实现接口Runnable来创建线程。但是无论哪种方式创建都可以通过start()和run( )方法来启动线程,下面就来介绍一下两者的区别。

         start():通过该方法启动线程的同时也创建了一个线程,真正实现了多线程,这是无需等待run()方法中的代码执行完毕就可以直接执行下面的代码,通过start创建的线程处于可运行状态,当得到CPU时间片后就会执行其中的run方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

        run():通过run方法启动线程其实就是调用一个类中的方法,并没有创建一个线程,程序中还是只有主线程,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

        下面是两种创建线程的代码示例:

通过继承Thread类

package com.Test.Tread;

public class ThreadDemo02 extends Thread{
    public void run(){
        System.out.println("线程启动!");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       ThreadDemo02 thread = new ThreadDemo02();
       thread.start();
    }

}

通过实现Runnable接口

package com.Test.Tread;

public class ThreadDemo03 implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("线程启动02");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       Thread thread01 = new Thread(new ThreadDemo03());
       thread01.start();
    }

}


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!