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