Java:简答

56°C 05-01-2025 notbyai
最近更新于:2025-01-06 10:50:33

1. 何为异常?为什么要进行异常处理?

何为异常?

异常是指程序运行过程中发生的非正常情况或错误。Java中,异常是一种对象,用来描述错误或意外情况,所有异常类继承自java.lang.Throwable,主要分为Error(错误)和Exception(异常)。

为什么要进行异常处理?

  1. 保证程序稳定性:防止程序因异常而崩溃。
  2. 分离逻辑与处理:让代码更清晰、可维护。
  3. 提供调试信息:便于定位问题,通过异常堆栈跟踪分析错误。
  4. 增强用户体验:提供友好提示,而非直接终止程序。
  5. 应对外部环境:处理文件、网络等不可控问题,确保程序运行可靠。

2. Error和Exception类有什么不同?

  1. ErrorException都继承自Throwable,但含义和用法不同。
  2. Error
    • 表示系统级别的错误(如内存溢出OutOfMemoryError、栈溢出StackOverflowError)。
    • 通常由JVM引发,不可恢复,不建议捕获处理。
  3. Exception
    • 表示程序级别的异常(如IOExceptionNullPointerException)。
    • 可分为受检异常(Checked Exception,必须显式处理)和非受检异常(Unchecked Exception)。
    • 开发者可以通过try-catch处理。
  4. 主要区别
    • Error是系统错误,无法恢复;Exception是程序错误,可恢复。
    • Error不需捕获;Exception需根据情况捕获处理。

3. 如何建立多线程?

  1. 继承Thread类
    • 创建一个类继承Thread类,重写run()方法,然后通过start()方法启动线程。
  2. 实现Runnable接口
    • 创建一个类实现Runnable接口,重写run()方法,将其传入Thread对象,通过start()方法启动线程。
  3. 使用Lambda表达式
    • 使用Runnable接口的函数式编程特性,通过Lambda表达式简化线程创建。
  4. 实现Callable接口
    • 实现Callable接口,重写call()方法,使用FutureTask包装后,通过Thread启动线程。
  5. 使用线程池
    • 使用ExecutorServiceExecutors创建线程池,提交任务执行并管理线程。

4. 线程的生命周期有哪几种状态?各状态之间分别用哪些方法切换?

Java线程的生命周期状态及切换方法:

  1. 新建状态(New)
    • 描述:线程对象被创建,尚未调用start()方法。
    • 切换方法:调用start()方法,进入就绪状态
  2. 就绪状态(Runnable)
    • 描述:线程调用start()方法后,等待CPU调度,具备运行条件但未运行。
    • 切换方法:
      • 被CPU调度,进入运行状态
  3. 运行状态(Running)
    • 描述:线程获取CPU时间片,开始执行run()方法。
    • 切换方法:
      • 调用yield()方法,进入就绪状态
      • 执行完成或抛出异常,进入终止状态
      • 调用wait()sleep()或等待锁,进入阻塞/等待状态
  4. 阻塞/等待状态(Blocked/Waiting/Timed Waiting)
    • 描述:线程因某些操作被阻塞或主动等待,暂时无法运行。
      • 阻塞状态:等待获取锁(如synchronized)。
      • 等待状态:调用wait()join()等方法。
      • 超时等待状态:调用sleep()wait(timeout)等方法。
    • 切换方法:
      • 阻塞状态:获取锁后,进入就绪状态
      • 等待状态:被notify()notifyAll()唤醒或时间到期,进入就绪状态
  5. 终止状态(Terminated)
    • 描述:线程执行完成或因未捕获异常而结束。
    • 切换方法:线程生命周期结束,无法再切换到其他状态。

总结状态转换:

  • 新建 → 就绪:调用start()
  • 就绪 → 运行:CPU调度。
  • 运行 → 就绪:调用yield()
  • 运行 → 阻塞/等待:调用wait()sleep()或获取不到锁。
  • 阻塞/等待 → 就绪:获取锁或被唤醒。
  • 运行 → 终止:执行完成或抛出异常。


评论留言

欢迎您,!您可以在这里畅言您的的观点与见解!

0 条评论