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。

results matching ""

    No results matching ""