12.2.1 继承Thread类

更新于 2026年10月10日 版权声明
12.2.1 继承Thread类

Thread类将线程所必需的功能都进行了封装,表12.1所示是Thread类的一些基本方法。

表12.1 Thread类的基本方法

图示

通过继承Thread类来实现线程的一般过程如下:

(1)编写Thread类的子类,并在这个子类中覆写run()方法。

(2)在run()方法中编写这个线程需要执行的代码或任务。

(3)在主线程中使用(1)中编写的子类来创建线程。

(4)使用start()方法来启动线程。

【例12.1】通过创建Thread类的子类来实现多线程编程。

在Eclipse中创建一个名为Chapter12的项目,并在这个项目的src目录下新建一个名为cn.pzhu.create的包,然后在这个包下面创建一个名为MyThread的类(该类是Thread的子类),最后在这个类中覆写run()方法,关键代码如下:

图示

说明:

为了让程序效果更明显,上述代码中线程重复执行输出5次后结束,并且每次输出之后将休眠100 ms。如果线程不使用sleep()方法休眠,可能在一个时间片内程序就执行完毕了,无法看出线程之间的交替执行。

编写好MyThread类之后,下面开始编写示例。在cn.pzhu.create的包下创建一个名为Example01的类,在这个类中既有main()方法的输出,又调用线程来进行输出。关键代码如下:

图示(https://www.daowen.com)

图示

编写好之后,运行程序,程序运行结果如图12.3所示。

图示

图12.3 程序运行结果

从图12.3可以看出,MyThread类的run()方法中的输出操作与main()方法中的输出在随机轮换执行。在使用多线程的情况下,MyThread类的run()方法与main()方法可以同时运行,互不影响。

说明:

运行结果中的"main"和"Thread-0"是通过Thread.currentThread().getName()方法获取到的当前正在运行的线程的名字,如果在创建线程的时候没有指定名字,那么系统会自动生成。

如果将Example01.java中创建线程的代码修改为:

图示

然后再运行程序,程序运行结果如图12.4所示。

图示

图12.4 程序运行结果

从运行结果可以看出,线程的名字已经发生了变化,变为了"newThread"。

提示:

除了在构造线程的时候,利用构造方法给线程指定名称,还可以通过setName(String name)方法来修改线程的名称。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)