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