Maison > Java > javaDidacticiel > Comment puis-je créer une carte ou un cache expirant en fonction du temps en Java à l'aide de Guava ?

Comment puis-je créer une carte ou un cache expirant en fonction du temps en Java à l'aide de Guava ?

Patricia Arquette
Libérer: 2024-11-24 14:42:15
original
526 Les gens l'ont consulté

How Can I Create a Time-Based Expiring Map or Cache in Java Using Guava?

Carte/Cache temporel Java avec clés expirantes

Dans le langage de programmation Java, gestion des entrées temporelles dans une carte ou un cache est une exigence courante. Cet article fournit une solution utilisant Google Collections (Guava) pour la purge automatique des entrées expirées.

Solution

La classe MapMaker de Guava peut créer une carte temporelle avec expiration réglable paramètres. L'API MapMaker permet de personnaliser divers paramètres, tels que :

  • Niveau de concurrence
  • Types de clé et de valeur (fort/doux/faible)
  • Taille maximale
  • Délai d'expiration

Utilisation Exemple

L'extrait de code suivant montre comment créer une carte temporelle simultanée :

ConcurrentMap<Key, Graph> graphs = new MapMaker()
   .concurrencyLevel(4)
   .softKeys()
   .weakValues()
   .maximumSize(10000)
   .expiration(10, TimeUnit.MINUTES)
   .makeComputingMap(
       new Function<Key, Graph>() {
         public Graph apply(Key key) {
           return createExpensiveGraph(key);
         }
       });
Copier après la connexion

Dans cet exemple, la carte purge automatiquement les entrées expirées toutes les 10 minutes.

Mise à jour

Dans Guava 10.0 et versions ultérieures, le Les méthodes MapMaker ont été déconseillées au profit de CacheBuilder :

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
    .maximumSize(10000)
    .expireAfterWrite(10, TimeUnit.MINUTES)
    .build(
        new CacheLoader<Key, Graph>() {
          public Graph load(Key key) throws AnyException {
            return createExpensiveGraph(key);
          }
        });
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal