2011-11-30 14 views
3

私はソケットからデータを取得するクラスを持っています。いくつかの条件に従ってこのクラスのインスタンスを5つ作成する必要があります。このクラスの特定の瞬間が実行されているかどうかを確認するにはどうすればいいですか? これは、いくつかのコードスニップです:クラスの特定のインスタンスがjavaで実行されているかどうかをチェックする方法は?

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; 
     } 
    } 
} 

答えて

1

あなたのクラスを変更し、それに特別なidフィールドを追加することができます。このIDはクラスコンストラクターに生成され、インスタンスを常に識別できます。 IDを生成するには、ミリ秒単位のタイムスタンプまたは乱数または静的インスタンスカウンタを使用するか、世界中で実際に一意のIDを作成する場合は、UUID.randomUUID()を使用します。

その他の解決方法は、System.identityHashCode(obj)です。これは、JVMの現在のインスタンス内のすべてのオブジェクトで一意です。

+0

「あなたのクラスとそれに特別なID」 –

+0

ありがとう、アーロン。私はその文を修正した。 – AlexR

1

​​を使用します。各インスタンスに固定キー(IPアドレスなど)を付けます。

ファクトリには、キーを使用して既存のインスタンスを検索するキャッシュがあります。キャッシュにインスタンスがない場合は、新しいインスタンスを作成します。

関連する問題