2016-07-19 6 views
0

キャッシュを使用するバッチプログラムがあります。最初にデータが到着するとすぐにキャッシュは空です。 It受信したデータを前の受信データと比較します。
* - データが見つからない場合は、次のデータ
に追加* - データが見つかりましたが、別の場合:更新データ
* - データが見つかりましたが、同じ場合:データは数時間後、キャッシュ(CacheBuilder)を開始するときにそれを入力する必要があります。それを行うためのランダムな方法はありますか?

ので
を除外、キャッシュサイズは、データが増加し続けると増加します。その処理には処理にかなりの時間がかかります。

この状況をすべてテストする必要があります。受信データがいくつかあり、この状況を再現する必要があります。だから私は開始時にキャッシュを満たす必要があります。それを行うためのランダムな方法はありますか?

私はキャッシュにCacheBuilderを使用しています:

プライベートキャッシュ> statesCache = .newBuilder() .maximumSize(1000) .build();

+0

問題の内容は明らかではありません。 「開始時にキャッシュを埋める」ことを止めさせてくれるのは何ですか? –

+0

私は、それを行うためのいくつかのinbuilt関数があると思った。後でforループを使ってやった。 – user3395246

+0

あなたは "それを行うための組み込み関数"を見つけました。それはあなたがそれをした方法です。 –

答えて

0

私は、それを行うためのいくつかのinbuilt関数があると思った。その後、私はそれがforループを使用していた:

プライベート静的キャッシュ> 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); 
    } 
} 
関連する問題