📝 第2章测试

线程基础操作知识检测

返回章节
1. 关于Thread类和Runnable接口,以下说法正确的是?
  • Thread类和Runnable接口功能完全相同
  • 实现Runnable接口比继承Thread类更灵活
  • 继承Thread类可以避免Java单继承限制
  • Runnable接口不能使用Lambda表达式

解析:

实现Runnable接口比继承Thread类更灵活,因为Java只支持单继承,实现Runnable接口可以让类继承其他类的同时实现多线程功能。

2. 以下哪个方法调用会创建新的线程?
  • thread.run()
  • new Thread()
  • thread.start()
  • Thread.sleep()

解析:

只有调用start()方法才会创建新的线程并在新线程中执行run()方法。直接调用run()方法只是在当前线程中执行,不会创建新线程。

3. Callable接口相比Runnable接口的主要优势是?
  • 可以返回结果并抛出异常
  • 执行效率更高
  • 可以直接用Thread类执行
  • 不需要异常处理

解析:

Callable接口的call()方法可以返回结果并抛出异常,而Runnable接口的run()方法返回void且不能抛出检查异常。

4. 关于守护线程,以下说法错误的是?
  • 守护线程为其他线程提供服务
  • 当所有非守护线程结束时,守护线程自动结束
  • JVM不会等待守护线程执行完成
  • 守护线程的优先级总是最低的

解析:

守护线程的优先级不一定是最低的,可以通过setPriority()方法设置守护线程的优先级。守护线程的特点是在所有非守护线程结束时自动结束。

5. 线程中发生未捕获异常时,应该使用什么机制处理?
  • 在主线程中使用try-catch
  • 使用UncaughtExceptionHandler
  • 使用Thread.sleep()方法
  • 忽略异常,让线程自然结束

解析:

线程中的异常不能被主线程捕获,需要使用UncaughtExceptionHandler接口来处理线程中的未捕获异常。

测试结果