跳转到内容

第7章 线程 — 在线单元测验

1. 单选(2分)

Thread 类获得当前活动线程数的方法是 ______________

A. Thread currentThread()

B. boolean isAlive()

C. int activeCount()

D. int getPriority()


2. 单选(2分)

Thread 类获得当前执行线程对象的方法是 ______________

A. Thread currentThread()

B. int getPriority()

C. int activeCount()

D. boolean isAlive()


3. 单选(2分)

Thread 类设置线程优先级的方法是 _______________

A. void setPriority(int priority)

B. boolean isAlive()

C. int getPriority()

D. void interrupt()


4. 单选(2分)

执行 new Thread(…),则该线程的状态是 _________________

A. RUNNABLE

B. WAITING

C. BLOCKED

D. NEW

解析:new Thread() 只是创建了线程对象,尚未调用 start(),线程处于 NEW(新建) 状态。


5. 单选(2分)

启动一个线程后,其状态是 _______________

A. RUNNABLE

B. NEW

C. WAITING

D. BLOCKED

解析:调用 start() 后,线程进入 RUNNABLE(可运行) 状态,等待 CPU 调度。


6. 单选(2分)

执行 Thread.sleep(…) 方法,线程进入 _____________ 态。

A. RUNNABLE

B. TIMED_WAITING

C. TERMINATED

D. NEW

解析:sleep() 让线程在指定时间内主动放弃 CPU,进入 TIMED_WAITING(计时等待) 状态。


7. 单选(2分)

线程执行完 run() 方法的状态是 _______________

A. TIMED_WAITING

B. BLOCKED

C. WAITING

D. TERMINATED

解析:run() 方法执行完毕后,线程生命周期结束,进入 TERMINATED(终止) 状态。


8. 单选(2分)

Thread 类设置线程中断的方法是 ______________

A. void interrupt()

B. int getPriority()

C. boolean isAlive()

D. boolean isInterrupted()


9. 填空(2分)

【例7.1】声明奇偶数列线程类如下,继承 Thread 类。

public class NumberThread extends Thread

调用语句如下:

Thread thread = new NumberThread("奇数线程", 1, 10);
___________________;        // 启动线程对象

答案:thread.start()


10. 填空(2分)

Runnable 接口中声明 __________________ 方法表示线程执行方法。

答案:run()


11. 填空(2分)

一个 Java Application 应用程序,最先执行的线程是 __________

答案:main(主线程)


12. 填空(2分)

启动一个线程,将执行该线程的 ________________ 方法。

答案:run()


13. 填空(2分)

【例7.2】声明 NumberRunnable 类如下,实现 Runnable 接口,提供线程运行方法。

public class NumberRunnable implements Runnable

调用语句如下:

Runnable target = new NumberRunnable(1, 20);
Thread thread_odd = new Thread(____________);   // 线程委托target目标对象提供run()方法
thread_odd.start();

答案:target

解析:Thread(Runnable target) 构造方法接收 Runnable 对象,线程启动后执行 target.run()


14. 填空(2分)

线程睡眠方法的调用语句是:

try {
    __________________;   // 使线程暂停运行1秒
}
catch (InterruptedException ex) {  }

答案:Thread.sleep(1000)

解析:Thread.sleep(long millis) 参数单位是毫秒,1000ms = 1 秒。该方法会抛出 InterruptedException,必须捕获处理。


知识点总结

线程 6 种状态

NEW → RUNNABLE → TERMINATED
         ↓
    BLOCKED(等待锁)
    WAITING(wait/join 无限等待)
    TIMED_WAITING(sleep/wait(timeout) 限时等待)

Thread 类核心方法速查

方法

说明

static Thread currentThread()

获取当前执行线程对象

static int activeCount()

获取当前线程组中活动线程数

static void sleep(long ms)

当前线程休眠指定毫秒

void start()

启动线程(JVM 调用 run())

void run()

线程执行体(需重写)

void setPriority(int p)

设置优先级(1-10,默认 5)

int getPriority()

获取优先级

void interrupt()

中断线程(设置中断标志)

boolean isInterrupted()

检查是否被中断

boolean isAlive()

线程是否存活(已 start 且未终止)

创建线程的两种方式

方式

步骤

启动

继承 Thread

class MyThread extends Thread { @Override run() }

new MyThread().start()

实现 Runnable

class MyRun implements Runnable { @Override run() }

new Thread(new MyRun()).start()

推荐使用 Runnable:避免单继承限制,分离线程任务与线程对象。