Ich habe einen Anwendungsfall, wo ich Einträge in eine Datenstruktur aus mehreren Threads füllen möchte und nach dem Erreichen einer bestimmten Größe beginnen alte Datensätze löschen. Also entschied ich mich, dafür den Guava Loading Cache zu verwenden.Wie können Einträge in Lade-Cache-Guave gefüllt werden?
Ich möchte Einträge in meinen Lade-Cache aus mehreren Threads auffüllen, und ich setze Räumungsrichtlinie wie Size Based Eviction
.
private final ScheduledExecutorService executorService = Executors
.newSingleThreadScheduledExecutor();
private final LoadingCache<String, DataBuilder> cache =
CacheBuilder.newBuilder().maximumSize(10000000)
.removalListener(RemovalListeners.asynchronous(new CustomListener(), executorService))
.build(new CacheLoader<String, DataBuilder>() {
@Override
public DataBuilder load(String key) throws Exception {
// what I should do here?
// return
}
});
// this will be called from multiple threads to populate the cache
public void addToCache(String key, DataBuilder dataBuilder) {
// what I should do here?
//cache.get(key).
}
Meine addToCache
Methode von mehreren Threads aufgerufen werden, um die cache
zu füllen. Ich bin verwirrt, was ich tun sollte innerhalb addToCache
Methode, um den Cache zu füllen und auch wie sieht meine load
Methode aus?
Hier ist DataBuilder
mein Builder-Muster.
Wie sollten wir wissen, wie Sie Ihre Daten geladen werden soll? Und warum möchten Sie Ihren Cache vorab auffüllen, anstatt ihn langsam laden zu lassen? – shmosel
Ich meine meine Frage war, seit ich 'DataBuilder' in der' addToCache' Methode zur Verfügung habe. Wie kann ich LoadingCache mit Daten füllen? Das ist meine Verwirrung. –