Java工程师面试:线程与IO详解
"Java工程师面试相关知识,包括Servlet初始化、线程创建与管理、IO操作以及异常处理体系" 在Java编程中,Servlet是用于处理HTTP请求的服务端组件。当Servlet被实例化后,Web应用服务器(如Tomcat)会调用Servlet的`init()`方法进行初始化。这个初始化过程通常用于一次性配置工作,比如加载配置文件、建立数据库连接池等。`init()`方法只会被调用一次,在Servlet生命周期开始时执行。 线程在Java中可以通过多种方式创建: 1. 继承`Thread`类并重写`run()`方法,然后创建该类的实例并调用`start()`方法启动新线程。 2. 实现`Runnable`接口,创建一个实现了`run()`方法的对象,然后将其传递给`Thread`的构造函数并调用`start()`。 3. 实现`Callable`接口,通过`FutureTask`来包装`Callable`对象,然后提交给`ExecutorService`执行。 4. 使用线程池,如`ExecutorService`,通过`execute()`方法提交`Runnable`或`Callable`任务。 线程控制方法包括`yield()`、`sleep()`、`join()`、`wait()`和中断相关方法: - `yield()`:使当前线程暂停执行,回到就绪状态,允许其他具有相同优先级的线程获得执行机会。 - `sleep()`:使当前线程进入阻塞状态,指定时间后自动唤醒,期间不释放锁。 - `join()`:让当前线程等待另一个指定线程执行完毕后再继续执行。 - `wait()`:使当前线程进入等待状态,释放锁,直到被其他线程调用`notify()`或`notifyAll()`唤醒。 - `interrupt()`、`interrupted()`和`isInterrupted()`:用于中断和检测线程是否被中断。 Java中的线程分为用户线程(UserThread)和守护线程(DaemonThread)。用户线程是应用程序的主要执行者,而守护线程通常用于后台服务,如垃圾回收。只要还有用户线程运行,守护线程就会继续存在,否则程序结束时,守护线程也会随之终止。 IO操作在Java中涉及了多种类和设计模式: - 适配器模式:用于不同类型的流之间的转换,例如`InputStreamReader`和`OutputStreamWriter`用于在字节流和字符流之间转换。 - 装饰者模式:通过继承`FilterInputStream`等类,可以添加额外功能到已有的流对象。 常见的字符流包括`FileReader`、`FileWriter`(支持指定编码和追加写入)、`BufferedReader`、`BufferedWriter`、`InputStreamReader`和`OutputStreamWriter`。字节流包括`FileInputStream`、`FileOutputStream`等。 异常处理是Java程序的重要部分,`Throwable`是所有异常的基类,分为`Error`和`Exception`两大类: - `Error`通常表示系统级别的问题,如`StackOverflowError`(递归过深)和`OutOfMemoryError`(内存耗尽)。 - `Exception`是程序运行时可能出现的错误,分为检查异常(需用`throws`声明)和非检查异常(通常由` RuntimeException`及其子类表示,无需声明)。 在方法上使用`throws`关键字声明可能抛出的异常,而`throw new Exception()`则用于手动抛出异常。在程序中,合理的异常处理可以提高程序的健壮性和可维护性。
![](https://csdnimg.cn/release/download_crawler_static/86390456/bg4.jpg)
剩余16页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)