1. 何为异常?为什么要进行异常处理?
何为异常?
异常是指程序运行过程中发生的非正常情况或错误。Java中,异常是一种对象,用来描述错误或意外情况,所有异常类继承自java.lang.Throwable,主要分为Error(错误)和Exception(异常)。
为什么要进行异常处理?
- 保证程序稳定性:防止程序因异常而崩溃。
 - 分离逻辑与处理:让代码更清晰、可维护。
 - 提供调试信息:便于定位问题,通过异常堆栈跟踪分析错误。
 - 增强用户体验:提供友好提示,而非直接终止程序。
 - 应对外部环境:处理文件、网络等不可控问题,确保程序运行可靠。
 
2. Error和Exception类有什么不同?
- Error和Exception都继承自
Throwable,但含义和用法不同。 - Error:
- 表示系统级别的错误(如内存溢出
OutOfMemoryError、栈溢出StackOverflowError)。 - 通常由JVM引发,不可恢复,不建议捕获处理。
 
 - 表示系统级别的错误(如内存溢出
 - Exception:
- 表示程序级别的异常(如
IOException、NullPointerException)。 - 可分为受检异常(Checked Exception,必须显式处理)和非受检异常(Unchecked Exception)。
 - 开发者可以通过
try-catch处理。 
 - 表示程序级别的异常(如
 - 主要区别:
- Error是系统错误,无法恢复;Exception是程序错误,可恢复。
 - Error不需捕获;Exception需根据情况捕获处理。
 
 
3. 如何建立多线程?
- 继承Thread类
- 创建一个类继承
Thread类,重写run()方法,然后通过start()方法启动线程。 
 - 创建一个类继承
 - 实现Runnable接口
- 创建一个类实现
Runnable接口,重写run()方法,将其传入Thread对象,通过start()方法启动线程。 
 - 创建一个类实现
 - 使用Lambda表达式
- 使用
Runnable接口的函数式编程特性,通过Lambda表达式简化线程创建。 
 - 使用
 - 实现Callable接口
- 实现
Callable接口,重写call()方法,使用FutureTask包装后,通过Thread启动线程。 
 - 实现
 - 使用线程池
- 使用
ExecutorService或Executors创建线程池,提交任务执行并管理线程。 
 - 使用
 
4. 线程的生命周期有哪几种状态?各状态之间分别用哪些方法切换?
Java线程的生命周期状态及切换方法:
- 新建状态(New)
- 描述:线程对象被创建,尚未调用
start()方法。 - 切换方法:调用
start()方法,进入就绪状态。 
 - 描述:线程对象被创建,尚未调用
 - 就绪状态(Runnable)
- 描述:线程调用
start()方法后,等待CPU调度,具备运行条件但未运行。 - 切换方法:
- 被CPU调度,进入运行状态。
 
 
 - 描述:线程调用
 - 运行状态(Running)
- 描述:线程获取CPU时间片,开始执行
run()方法。 - 切换方法:
- 调用
yield()方法,进入就绪状态。 - 执行完成或抛出异常,进入终止状态。
 - 调用
wait()、sleep()或等待锁,进入阻塞/等待状态。 
 - 调用
 
 - 描述:线程获取CPU时间片,开始执行
 - 阻塞/等待状态(Blocked/Waiting/Timed Waiting)
- 描述:线程因某些操作被阻塞或主动等待,暂时无法运行。
- 阻塞状态:等待获取锁(如
synchronized)。 - 等待状态:调用
wait()、join()等方法。 - 超时等待状态:调用
sleep()或wait(timeout)等方法。 
 - 阻塞状态:等待获取锁(如
 - 切换方法:
- 阻塞状态:获取锁后,进入就绪状态。
 - 等待状态:被
notify()、notifyAll()唤醒或时间到期,进入就绪状态。 
 
 - 描述:线程因某些操作被阻塞或主动等待,暂时无法运行。
 - 终止状态(Terminated)
- 描述:线程执行完成或因未捕获异常而结束。
 - 切换方法:线程生命周期结束,无法再切换到其他状态。
 
 
总结状态转换:
- 新建 → 就绪:调用
start()。 - 就绪 → 运行:CPU调度。
 - 运行 → 就绪:调用
yield()。 - 运行 → 阻塞/等待:调用
wait()、sleep()或获取不到锁。 - 阻塞/等待 → 就绪:获取锁或被唤醒。
 - 运行 → 终止:执行完成或抛出异常。
 
评论留言
欢迎您,!您可以在这里畅言您的的观点与见解!
                0 条评论