2016-07-19 14 views
0

Ich habe ein Stapelprogramm, das einen Cache verwendet. Anfangs ist der Cache leer, sobald die Daten ankommen Es vergleicht die empfangenen Daten mit den zuvor empfangenen Daten.
* - Wenn die Daten nicht gefunden:
* zu Daten hinzugefügt - Wenn gefundenen Daten aber anders: Die Daten
* aktualisieren - Wenn Daten gefunden, aber gleich: Daten herausgefiltert
Ich muss den Cache (CacheBuilder) beim Start füllen. Gibt es einen zufälligen Weg, es zu tun?

die also nach wenigen Zeit, Die Cache-Größe nimmt zu, wenn die Daten weiter zunehmen. und dort dauert die Verarbeitung ziemlich viel Zeit für die Verarbeitung.

Ich muss diese ganze Situation testen, und ich habe ein paar eingehende Daten und ich muss diese Situation regenerieren. Also muss ich den Cache beim Start füllen. Gibt es einen zufälligen Weg, es zu tun?

Ich verwende CacheBuilder für den Cache:

privaten Cache> statesCache = .newBuilder() .maximumSize (1000) .build();

+0

Es ist nicht wirklich klar, was das Problem ist. Was hält Sie davon ab, den Cache beim Start zu füllen? –

+0

Ich dachte, es wird eine eingebaute Funktion geben, um das zu tun. Später habe ich es mit for-Schleife gemacht. – user3395246

+0

Sie haben gerade die "eingebaute Funktion dazu gefunden". So hast du es gemacht. –

Antwort

0

Ich dachte, es wird eine eingebaute Funktion geben, das zu tun. Später habe ich es für Schleife:

private static Cache> statesCache = CacheBuilder.newBuilder() // .maximumSize (1000) .expireAfterAccess (24, TimeUnit.HOURS) .build();

static { 

    for (int i = 0; i < 999; i++) { 
     Map<String, State> map = new HashMap<String, State>(); 
     for (int j = 0; j < 50; j++) { 
      State randomState = new State() { 
       String VALUE = null; 
       String Id = null; 
       String DATA = null; 

       @Override 
       public void setVALUE(String VALUE) { 
        this.VALUE = VALUE; 

       } 

       @Override 
       public void setId(String Id) { 
        this.Id = Id; 

       } 

       @Override 
       public void setDATA(String DATA) { 
        this.DATA = DATA; 

       } 

       @Override 
       public String getVALUE() { 
        return VALUE; 
       } 

       @Override 
       public String getId() { 
        return Id; 
       } 

       @Override 
       public String getDATA() { 
        return DATA; 
       } 

      }; 

      randomState.setDATA("Data_" + j); 
      randomState.setId("Id_" + j); 
      randomState.setVALUE("Value_" + j); 
      map.put("Id_" + j, randomState); 
     } 
     statesCache.put("BSTN_" + String.format("%04d", i), map); 
    } 
}