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();
}
}
来源:oschina
链接:https://my.oschina.net/u/2298764/blog/513061