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

         Java中启动线程有两种方式,继承Thread类以及实现接口Runnable,因为Java没法实现多重继承,故常常经过实现接口Runnable来建立线程。可是不管哪一种方式建立均可以经过start()和run( )方法来启动线程,下面就来介绍一下二者的区别。java

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

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

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

经过继承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接口code

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();
    }

}
相关文章
相关标签/搜索