帮我写一个懒汉加载 恶汉加载的demo 并介绍一下他们的区别?再帮我整理一份2023的java的关于流的面试题吧
时间: 2024-03-16 14:46:55 浏览: 24
好的,以下是一个懒汉加载和恶汉加载的示例代码:
懒汉加载:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
恶汉加载:
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
```
懒汉加载和恶汉加载都是单例模式的实现方式,它们的区别在于对象的创建时机不同:
1. 恶汉加载在类加载时就创建了对象,因此在多线程环境下也可以保证只有一个对象被创建。但是这样会导致类加载时就创建对象,可能会浪费一些资源。
2. 懒汉加载在第一次调用 `getInstance()` 方法时才创建对象,因此可以延迟对象的创建,节省资源。但是在多线程环境下,可能会出现多个线程同时调用 `getInstance()` 方法的情况,导致创建多个对象,需要加锁来解决。
下面是一些 Java 流方面的面试题:
1. 什么是 Java 中的流(Stream)?
2. Java 中的流分为几种类型?分别是什么?
3. InputStream 和 OutputStream 分别是哪个抽象类的子类?
4. BufferedReader 和 BufferedWriter 分别是哪个类的子类?
5. 什么是 Java 中的过滤器流(Filter Stream)?
6. Java 中如何实现文件的读写?
7. 什么是 Java 中的序列化和反序列化?如何实现对象的序列化和反序列化?
8. 什么是 Java 中的标准输入输出流?如何使用它们?
9. Java 中的 NIO 和 IO 有什么区别?
10. 什么是 Java 中的管道流(Piped Stream)?如何使用它们?
相关推荐
![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)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)