第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 类核心方法速查
|
方法 |
说明 |
|---|---|
|
|
获取当前执行线程对象 |
|
|
获取当前线程组中活动线程数 |
|
|
当前线程休眠指定毫秒 |
|
|
启动线程(JVM 调用 run()) |
|
|
线程执行体(需重写) |
|
|
设置优先级(1-10,默认 5) |
|
|
获取优先级 |
|
|
中断线程(设置中断标志) |
|
|
检查是否被中断 |
|
|
线程是否存活(已 start 且未终止) |
创建线程的两种方式
|
方式 |
步骤 |
启动 |
|---|---|---|
|
继承 Thread |
|
|
|
实现 Runnable |
|
|
推荐使用 Runnable:避免单继承限制,分离线程任务与线程对象。