Comment utiliser la goyave CacheBuilder?
Je voudrais utiliser les goyaves CacheBuilder
, mais ne peut pas trouver un exemple explicite comment le mettre en œuvre.
Les docs de l'état le code suivant:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
});
Question: qu'est-ce createExpensiveGraph(key)
méthode? Est-ce une méthode qui retourne un HashMap<Key, Value>
de la cartographie? Que dois-je faire avec le key
valeur?
Ou pourrais-je aussi tout juste de retour d'un List<String>
dans cette méthode de ne pas avoir à utiliser le key
valeur d'une façon quelconque?
- Voir l'api de CacheLoader et de la méthode de chargement qui donne clairement le sens de pourquoi la méthode est-elle utilisée? docs.guava-libraries.googlecode.com/git/javadoc/com/google/... createExpensiveGraph ne retourne pas hashMap au lieu de retourner un objet de Graphique.
- C'est ce que la fonction que vous essayez de mettre en cache le résultat de.
Vous devez vous connecter pour publier un commentaire.
L'idée du cache, c'est que vous avez généralement ce problème:
plus l'habitude des problèmes de synchronisation que vous avez lorsque vous utilisez ce code dans un environnement multi-thread.
Goyave ne le passe-partout pour vous; vous avez juste à mettre en œuvre
createNewGraph()
. La façon dont Java fonctionne, cela signifie que vous devez implémenter une interface. Dans ce cas, l'interface estCacheLoader
.Si vous pensez que l'ensemble de la mémoire cache est un peu comme une carte, puis
CacheLoader
est une fonction de callback qui est appelé chaque fois qu'une clé ne peut pas être trouvé dans la carte. Le chargeur doit obtenir la clé (car il contient généralement des informations utiles pour créer l'objet qui est prévu pour cette clé) et il sera de retour la valeur quiget()
devrait revenir dans l'avenir.