03-线程的创建、运行和设置
1.2 线程的创建、运行和设置
本节介绍如何使用Java API对线程进行基本的操作。与Java语言中的基本元素一样,线程也是对象(Object)。在Java中,创建线程的方法有以下两种。
- 直接继承
Thread
类,然后重写run()
方法。 - 构建一个实现
Runnable
接口的类并重写run()
方法,然后创建该类的实例对象,并以其作为构造参数去创建Thread
类的对象。建议首选这种方法,因为它可以带来更多的扩展性。
在本节中,我们将采用第二种方法创建线程,然后学习如何改变线程的属性。 Thread
类包含如下一些信息属性,它们能够辅助区分不同的线程、反映线程状态、控制其优先级等。
- ID :该属性存储了每个线程的唯一标识符。
- Name :该属性存储了线程的名字。
- Priority :该属性存储了
Thread
对象的优先级。在Java 9中,线程优先级的范围为1~10,其中1表示最低优先级,10表示最高优先级。通常不建议修改线程的优先级。线程优先级仅供底层操作系统作为参考,不能保证任何事情,如果一定要修改,请知晓优先级仅仅代表了一种可能性。 - Status :该属性保存了线程的状态。在Java中,线程有6种状态——
Thread.State
枚举中定义这些状态:NEW
、RUNNABLE
、BLOCKED
、WAITING
、TIMED_WAITING
和TERMINATED
。这些状态的具体意义如下。NEW:
线程已经创建完毕但未开始执行。RUNNABLE:
线程正在JVM中执行。BLOCKED:
线程处于阻塞状态,并且等待获取监视器。WAITING:
线程在等待另一个线程。TIMED_WAITING:
线程等待另一个线程一定的时间。TERMINATED:
线程执行完毕。
本节将在一个案例中创建10个线程来找出20000以内的奇数。