下面我已经实现了Multiton
模式,但我认为这个问题同样适用于Singleton
模式:
private static ConcurrentHashMap<String, LocatorDAO> instances = new ConcurrentHashMap<String, LocatorDAO>();
public static LocatorDAO getInstance(String page String field)
{
String instanceID = page + " " + field;
LocatorDAO result = instances.get(instanceID);
if (result == null)
{
LocatorDAO m = new LocatorDAO(page, field);
result = instances.putIfAbsent(instanceID, m);
if (result == null)
result = m;
}
return result;
}
我想通过每隔300秒实例化一个新实例来修改这个设计 - 所以如果从我们实例化前一个实例的300秒开始,我想再次实例化它(或者如果实例从未实例化过)。 / p>
怎么可以这样做?
答案 0 :(得分:0)
解决方案: 创建实例时保存时间戳。每当创建新实例时,请检查保存的时间戳并找到时差。
如何实施: 至少有两种方法可以实现这一目标:
将创建时间戳添加到instanceID
并手动搜索所有键。这是一个简单的解决方案,但速度较慢,因为您必须搜索哈希映射中的所有键。
实现一个bean类,它将包含两个字段LocatorDAO
和一个长字段以节省创建时间。在创建过程中,如果哈希映射中有项目,请检查它的创建时间,如果它超过300秒,则创建一个新实例
希望这个答案(没有代码示例)足够好。