【问题标题】:how to check if a specific instance of a class is running in java?如何检查类的特定实例是否在java中运行?
【发布时间】:2011-11-30 09:15:23
【问题描述】:

我有一个从套接字获取数据的类。我应该根据几个条件创建这个类的 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;
        }
    }
}

【问题讨论】:

    标签: java sockets network-programming long-running-processes


    【解决方案1】:

    使用factory pattern:给每个实例一个常量键(例如IP地址)。

    工厂有一个缓存,它使用键来查找现有实例。如果缓存中没有实例,则创建一个新实例。

    【讨论】:

      【解决方案2】:

      您可以修改您的班级并为其添加特殊的 id 字段。此 ID 将生成到类构造函数中,您始终可以识别您的实例。要生成 ID,请使用以毫秒为单位的时间戳或随机数或静态实例计数器,或者,如果您想在世界范围内创建真正唯一的 ID,请使用 UUID.randomUUID()

      其他解决方案就是使用System.identityHashCode(obj)。这在 JVM 的当前实例中的所有对象中都是唯一的。

      【讨论】:

      • 谢谢,亚伦。我已经修正了这句话。
      猜你喜欢
      • 2015-08-03
      • 1970-01-01
      • 2015-07-24
      • 2016-07-26
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多