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