0%

16.2 线程的创建和启动 16.2.1 继承Thread类创建线程类

16.2 线程的创建和启动

Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。Java使用线程执行体来代表这段程序流。

16.2.1 继承Thread类创建线程类

通过继承Thread类来创建并启动多线程的步骤如下:

  1. 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此run()方法称为线程执行体
  2. 创建Thread子类的实例,即创建了线程对象
  3. 调用线程对象的start()方法来启动该线程。

下面程序示范了通过继承Thread类来创建并启动多线程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 1.通过继承Thread类来创建线程类
public class FirstThread extends Thread
{
private int i ;
// 重写run方法,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)
{
// 2.创建、并启动第一条线程
new FirstThread().start();
// 创建、并启动第二条线程
new FirstThread().start();
}
}
}
}

上面程序中的FirstThread类继承了Thread类,并实现了run()方法,run()方法里的代码执行流就是该线程所需要完成的任务

主线程

Java程序开始运行后,程序至少会创建一个主线程,main()方法的方法体就是主线程的线程执行体

Thread类常用方法

除此之外,上面程序还用到了线程的如下两个方法。
|方法|描述|
|:—|:—|
|Thread.currentThread()|currentThread()Thread类的静态方法,该方法总是返回当前正在执行的线程对象。|
|getName()|该方法是 Thread类的实例方法,该方法返回调用该方法的线程名字|

程序可以通过setName(String name)方法为线程设置名字,也可以通过getName()方法返回指定线程的名字。
在默认情况下,主线程的名字为main,用户启动的多个线程的名字依次为Thread-0Thread-1Thread-2、…、 Thread-n等。

继承Thread类来创建线程的缺点

使用继承Thread类的方法来创建线程类时,多个线程之间无法共享线程类的实例变量.

原文链接: 16.2 线程的创建和启动 16.2.1 继承Thread类创建线程类