Le strutture dati a mappa sono molto utili in Java in quanto permettono di inserire un nuovo valore accompagnato da una chiave per il suo recupero rapido. Tra l’altro, questo tipo di meccanismo si presta bene alla realizzazione di cache dove come chiave viene usato un riferimento univoco (indirizzo di rete, un percorso su filesystem, etc.) e per valore i dati di cui si vorrà evitare il recupero ripetuto. Però una cache potrebbe avere bisogno di vedere le sue entry (accoppiata chiave/valore) cancellate in automatico dopo un tempo prestabilito: implementare in proprio tale meccanismo potrebbe richiedere un pò di lavoro e tempo pertanto oggi conosciamo una libreria molto utile che lo fa per noi, ExpiringMap. Oltre al suo scopo primario, questo strumento si distingue per efficienza e sicurezza, offrendo alte prestazioni in situazioni di concorrenza (è infatti un’implementazione di ConcurrentMap).
Dopo la sua integrazione nel progetto, la si inizializza tramite Builder specificando – ad esempio – il tempo dopo il quale una chiave deve annullarsi:
Map<String, Connection> map = ExpiringMap.builder() .expiration(30, TimeUnit.SECONDS) .build();
Oltre a ciò sono stati previsti tutti i comportamenti più comuni in casi del genere come il conteggio del tempo in base a momento di creazione o ultimo accesso, personalizzazione delle politiche per singola entry, uso di listener e molto altro.
ExpiringMap è uno di quegli strumenti efficienti, di piccole dimensioni, intuitivi ma che riescono a farci trovare risolto un problema spinoso che potrebbe causarci più di un grattacapo.
Dovesse capitarvi di implementare una cache all’interno di un software, provate ad utilizzare questa classe e rimarrete sorpresi delle risorse di cui dispone.
Alla prossima!










No Responses to “ExpiringMap: mappa con “scadenza” in Java”