第一种方式
让创建新类继承Thread,并重写run方法。
new出新类,调用start方法,创建新的线程,然后结束。
在新的线程中会自动调用run方法
直接继承Thread类
class M extends Thread{
//重写run方法
public void run(){
}
}
测试程序
public class Test01{
public static void main(String[]args){
//创建M对象
M m=new M();
//调用start方法创建新的线程。然后结束
m.start();
}
}
第二种方式
然创建的新类实现Runnable接口,通过new一个Thread类,将新类做为参数传入;
同时实现run方法
class M2 implements Runable{
//实现implements接口中的方法
public void run(){
}
}
测试程序
public class Test02{
public static void main(String[]args){
//创建m2类
M2 m2=new M2();
//创建Thread类
Thread thread=new Thread(m2);
//调用thread方法starts方法开启新的线程
thread.starts();
}
}
总结
无论是实现Runnable接口还是继承Thread类,最后都是调用其方法stats,最后线程自动调用run方法。因为java只支持单继承,若直接继承Thread,会让类失去灵活,而直接面向接口编程会更加灵活。