线程的启动
1.继承Thread类
2.实现Runnable接口
public class PrintThread extends Thread{
private String message;
public PrintThread(String message){
this.message = message;
}
public void run(){
for(int i = 0;i<100;i++){
System.out.print(message);
}
}
}
public class Main{
public static void main(String[] args){
new PrintThread("nick").start();
}
}
public class Printer implements Runnable{
private String message;
public PrintThread(String message){
this.message = message;
}
public void run(){
for(int i = 0;i<100;i++){
System.out.print(message);
}
}
}
public class Main{
public static void main(String[] args){
new PrintThread(new Printer("jerry")).start();
}
}
不管是利用Thread的子类还是Runnable接口的实现类,启动线程的方法最终都是Thread类的start方法。
注意:创建类的实例并不能真正创建新的线程,只有调用start方法的时候,才是真的创建线程。
Thread类实际上实现了Runnable接口,并且持有run方法,但Thread类的run方法主体是空的,不执行任何操作。但Thread类的run方法通常是有子类的run方法重写(override)