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以内的奇数。