使用单例模式在系统中创建对象, 1、创建的对象个数在配置文件中指定,创建的对象个数最多不超过指定的个数。 2、使用懒汉模式创建对象,注题线程安全。 3、在客户端中测试创建的对象是不是一样的写出具体代码
时间: 2024-11-03 14:21:26 浏览: 23
在系统中,我们可以使用单例模式来控制对象实例的数量,并结合配置文件管理和线程安全性。以下是三个方面的描述:
1. **基于配置文件的单例**:
创建一个名为SingletonConfig的类,其中包含一个静态变量保存已创建的实例数量,以及从配置文件读取的最大实例数。创建新实例时,检查这个数量是否达到上限,如果未满则创建,否则返回已有实例。
```java
public class SingletonConfig {
private static int maxInstances;
//... (从配置文件读取maxInstances)
public static synchronized Object getInstance() {
if (maxInstances > instances) {
return new MyClass(); // 假设MyClass是你需要的单例类
instances++;
} else {
return SingletonConfig.sharedInstance; // 存储已有实例
}
}
}
```
2. **懒汉式线程安全单例 (双重校验锁)**:
这里使用了双重检查锁定机制保证线程安全。只有在真正需要实例时才初始化,避免了多次同步带来的性能损耗。
```java
private volatile static MyClass lazyInstance;
public static MyClass getInstance() {
if (lazyInstance == null) {
synchronized (SingletonConfig.class) {
if (lazyInstance == null) {
lazyInstance = new MyClass();
}
}
}
return lazyInstance;
}
```
3. **测试客户端代码**:
客户端可以这样测试创建的对象是否为同一个:
```java
MyClass instance1 = SingletonConfig.getInstance();
MyClass instance2 = SingletonConfig.getInstance();
if (instance1 == instance2) {
System.out.println("创建的对象是相同的");
} else {
System.out.println("创建的对象不是同一个");
}
```
阅读全文