1、Java建立多線程的兩種方式 繼承Thread類 實現Runnable接口 兩種方法都須要重寫run()方法以後調用start()方法讓線程進入準備狀態。(具體執行時間由cpu調度,start()方法並不是真正的執行方法)。java
繼承Thread類 Thread類自己也是實現了Runnable接口,重寫了run()方法,Thread類可直接實例化線程對象bash
package test;
import org.junit.Test;
/**
* @ClassName: test1
* @Description: TODO
* @Author: JL
* @Date: 2019/2/18 17:46
* @Version 1.0
*/
public class test1 {
@Test
public void test(){
new ThreadTest().start();
new ThreadTest().start();
new ThreadTest().start();
new ThreadTest().start();
new ThreadTest().start();
}
class ThreadTest extends Thread{
//繼承Thread類,重寫run()方法
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"執行Start");
System.out.println(Thread.currentThread().getName()+"執行End");
}
}
}
複製代碼
實現Runnable接口 實例化Runnable接口的實現類對象,做爲Thread類的構造器參數生成線程對象。多線程
@Test
public void t2(){
ThreadTest1 runnable = new ThreadTest1();
new Thread(runnable).start();
new Thread(runnable).start();
new Thread(runnable).start();
new Thread(runnable).start();
new Thread(runnable).start();
}
class ThreadTest1 implements Runnable{
//實現Runnable接口,實現run()方法
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"執行Start");
System.out.println(Thread.currentThread().getName()+"執行End");
}
}
複製代碼
總結:java中存在單繼承、多實現的特性,因此咱們在開發過程當中儘可能使用實現Runnable接口,而非繼承Thread類。ide