我有一个从socket获取数据的类。我应该根据几个条件创建这个类的5个实例。如何检查此类的特定瞬间是否正在运行,还有哪些方法可以创建缺少的特定实例? 这是一些代码片段:
public void checkReachabilityOfHosts(){
String[] host = {"192.168.30.190", "", "", "", "" };
for (String h : host) {
if (h.length() > 0) {
if (isHostReachable(h)) {
DeviceByteReader deviceByteReader = new DeviceByteReader(h, 3001);
deviceByteReader.setUpConnection();
deviceByteReader.getSMessage();
deviceByteReader.tearDownConnection();
} else {
return;
}
}else {
return;
}
}
}
答案 0 :(得分:1)
您可以修改您的课程并为其添加特殊ID字段。此ID将生成到类构造函数中,您始终可以识别您的实例。要生成ID,请使用以毫秒为单位的时间戳或随机数或静态实例计数器,或者,如果要在全球范围内创建真正唯一的ID,请使用UUID.randomUUID()
。
其他解决方案就是使用System.identityHashCode(obj)
。这在JVM的当前实例中的所有对象中都是唯一的。
答案 1 :(得分:1)
使用factory pattern:为每个实例提供一个常量键(例如IP地址)。
工厂有一个缓存,它使用密钥来查找现有实例。如果缓存中没有实例,请创建一个新实例。