Java 使用 Thread 类代表线程,所有的线程对象都必须是 Thread 类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。 Java 使用线程执行体来代表这段程序流。
继承 Thread 类创建线程类
通过继承 Thread 类来创建并启动多线程的步骤如下。
定义 Thread 类的子类,并重写该类的 run() 方法,该 run() 方法的方法体就代表了线程需要完成的任务。因此把 run() 方法称为线程执行体。
创建 Thread 子类的实例,即创建了线程对象。
调用线程对象的 start() 方法来启动该线程。
下面程序示范了通过继承 Thread 类来创建并启动多线程。
//通过继承Thread类来创建线程类
public class FirstThread extendsThread {private int i = 0;//重写run()方法的方法体就是线程执行体
public voidrun() {for (; i < 100; i++) {//当线程类继承Thread时,直接使用this即可获取当前线程//Thread对象的getName()方法返回当前线程的名字//因此可以直接调用getName()方法返回当前线程的名字
System.out.println(getName() + " " +i);
}
}public static voidmain(String[] args) {for (int i = 0; i < 100; i++) {//调用Thread的currentThread()方法获取当前线程
System.out.println(Thread.currentThread().getName() + " " +i);if (i == 20) {//创建并启动第一个线程
newFirstThread().start();//创建并启动第二个线程
newFirstThread().start();
}
}
}
}
main 0main1main2main3main4main5main6main7main8main9main10main11main12main13main14main15main16main17main18main19main20main21main22main23main24main25main26main27main28main29main30main31Thread-1 0Thread-1 1main32Thread-1 2Thread-1 3main33Thread-1 4Thread-1 5Thread-1 6Thread-1 7main34main35main36main37main38Thread-0 0Thread-0 1Thread-0 2Thread-0 3Thread-0 4Thread-1 8Thread-0 5main39Thread-0 6Thread-0 7Thread-0 8Thread-0 9Thread-1 9Thread-0 10Thread-0 11Thread-0 12Thread-0 13main40Thread-0 14Thread-0 15Thread-0 16Thread-0 17Thread-0 18Thread-0 19Thread-0 20Thread-1 10Thread-1 11Thread-1 12Thread-1 13Thread-1 14Thread-1 15Thread-1 16Thread-1 17Thread-1 18Thread-1 19Thread-1 20Thread-1 21Thread-1 22Thread-1 23Thread-1 24Thread-1 25Thread-1 26Thread-1 27Thread-1 28Thread-1 29Thread-1 30Thread-1 31Thread-1 32Thread-1 33Thread-1 34Thread-1 35Thread-1 36Thread-1 37Thread-1 38Thread-1 39Thread-1 40Thread-1 41Thread-1 42Thread-1 43Thread-1 44Thread-1 45Thread-1 46Thread-1 47Thread-1 48Thread-1 49Thread-1 50Thread-1 51Thread-1 52Thread-1 53Thread-1 54Thread-1 55Thread-1 56Thread-1 57Thread-1 58Thread-1 59Thread-1 60Thread-1 61Thread-0 21main41Thread-0 22Thread-0 23Thread-1 62Thread-0 24Thread-0 25Thread-0 26Thread-0 27Thread-0 28Thread-0 29Thread-0 30Thread-0 31Thread-0 32Thread-0 33Thread-0 34Thread-0 35Thread-0 36Thread-0 37Thread-0 38Thread-0 39Thread-0 40main42Thread-0 41Thread-0 42Thread-0 43Thread-0 44Thread-0 45Thread-0 46Thread-0 47Thread-0 48Thread-0 49Thread-0 50Thread-1 63Thread-1 64Thread-1 65Thread-1 66Thread-1 67Thread-1 68Thread-1 69Thread-1 70Thread-1 71Thread-1 72Thread-1 73Thread-1 74Thread-1 75Thread-1 76Thread-1 77Thread-1 78Thread-1 79Thread-1 80Thread-1 81Thread-1 82Thread-1 83Thread-1 84Thread-1 85Thread-1 86Thread-1 87Thread-1 88Thread-1 89Thread-1 90Thread-1 91Thread-1 92Thread-1 93Thread-1 94Thread-1 95Thread-1 96Thread-1 97Thread-1 98Thread-1 99Thread-0 51Thread-0 52Thread-0 53Thread-0 54Thread-0 55Thread-0 56Thread-0 57Thread-0 58Thread-0 59Thread-0 60Thread-0 61Thread-0 62Thread-0 63Thread-0 64Thread-0 65Thread-0 66Thread-0 67Thread-0 68Thread-0 69Thread-0 70Thread-0 71Thread-0 72Thread-0 73Thread-0 74Thread-0 75Thread-0 76Thread-0 77Thread-0 78Thread-0 79Thread-0 80Thread-0 81Thread-0 82Thread-0 83Thread-0 84Thread-0 85Thread-0 86Thread-0 87Thread-0 88Thread-0 89Thread-0 90Thread-0 91Thread-0 92Thread-0