Java使用Thread类代表线程,所有线程对象都必须是Thread类或其子类的实例。
继承Thread类
通过继承Thread类创建并启动多线程,需要重写该类的run()方法。
public class Test01 extends Thread {
private int i;
public void run(){
for(;i<100;i++){
System.out.println(getName()+" "+i);
}
}
public static void main(String[] args) {
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20){
new Test01().start();
new Test01().start();
}
}
}
}
上面的程序,将会创建3个线程,即显式创建的2个子线程和1个主线程。
实现Runnable接口
定义Runnable接口实现类,重写接口的run()方法,并将其作为Thread的target对象
public class Test02 implements Runnable{
private int i;
public void run(){
for(;i<100;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
public static void main(String[] args) {
for(int i=0;i<100;i++){
Test02 st=new Test02();
if(i==20){
new Thread(st,"新线程01");
new Thread(st,"新线程02");
}
}
}
}
采用Runnable接口方式创建的多个线程可以共享线程类的实例属性,因为Runnable对象只是线程的target,多个线程可以共享同一个target。