1.1.2 考点2:线程组
在Java中,每个线程都必须归属于一个线程组。线程组可以把一组线程作为单个对象进行统一的处理或维护。
线程在创建时必须显示确定其归属的线程组,其他任何时候都不允许更改线程所属的线程组。线程创建时默认继承父进程的线程组,其中首个线程组是main。线程组可以包含任意数目的线程和其他线程组,因此在Java应用程序中,线程组呈现出以main为根,其他线程和线程组为叶节点的树型结构 线程组在java.lang包中的ThreadGroup类实现。
1.1.3 考点3:线程状态
线程拥有自己的生命周期,不同的生命阶段具有不同的状态。线程的主要状态有:新建状态(New)、可运行状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)和终止状态(Dead)。
线程被创建后,并不马上启动,而是进入新建状态。此时线程没有分配资源,只能使用start()和stop()两个控制方法。
新建状态的线程在调用start()方法后,进入可运行状态。此时线程已经分配了必要资源,交给了系统调度。一旦线程实际占有了CPU,就进入了运行状态。
运行状态的线程如果调用了yield()方法、sleep()方法、join()方法或wait()方法,或者申请对象锁未果、有更高优先级线程进入调度等,都可进入阻塞状态。阻塞状态的进程在获取到足够的资源后,也可以转入到可运行状态。
当运行状态的线程正常执行完毕后,就进入了终止状态。
线程的生命周期与状态转变关系如图10-2所示。

例1.1.2 线程在生命期中要经历5种状态,它们分别是新建状态、可运行状态、运行状态、________状态和终止状态。
答案:阻塞
例1.1.3 线程在生命周期中要经历5种状态。如果线程当前是新建状态,则它可到达的下一个状态是( )。
A.运行状态 B.阻塞状态 C.可运行状态 D.终止状态
答案:C
例1.1.4 线程生命周期中正确的状态是( )。
A.新建状态、运行状态和终止状态
B.新建状态、运行状态、阻塞状态和终止状态
C.新建状态、可运行状态、运行状态、阻塞状态和终止状态
D.新建状态、可运行状态、运行状态、恢复状态和终止状态
答案:C