Using 'maxSize' method, we can set the maximum size to expiring cache.
Example
Map<Integer, Employee> expiringMap = ExpiringMap.builder().expiration(10, TimeUnit.SECONDS).maxSize(5).expirationPolicy(ExpirationPolicy.CREATED).build();
Once this size has been reached, adding an additional entry will expire the first entry in line for expiration based on the expiration policy. Let’s confirm with below example.
Employee.java
package com.sample.app.model;
public class Employee {
private int id;
private String name;
public Employee(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + "]";
}
}
MaxCacheSizeDemo.java
package com.sample.app;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import com.sample.app.model.Employee;
import net.jodah.expiringmap.ExpirationPolicy;
import net.jodah.expiringmap.ExpiringMap;
public class MaxCacheSizeDemo {
private static void sleepNSeconds(int n) throws InterruptedException {
System.out.println("\nSleeping for " + n + " seconds");
TimeUnit.SECONDS.sleep(n);
}
private static void printCache(Map<Integer, Employee> expiringMap) {
System.out.println("\nPrinting all the elements of cache");
expiringMap.forEach((key, value) -> {
System.out.println("Key : " + key + " Value : " + value);
});
}
public static void main(String args[]) throws InterruptedException {
Map<Integer, Employee> expiringMap = ExpiringMap.builder().expiration(10, TimeUnit.SECONDS).maxSize(5)
.expirationPolicy(ExpirationPolicy.CREATED).build();
System.out.println("Adding 5 employees");
for (int i = 1; i < 6; i++) {
Employee emp = new Employee(i, "emp " + i);
expiringMap.put(i, emp);
}
sleepNSeconds(3);
printCache(expiringMap);
System.out.println("\nAdd two more elements");
expiringMap.put(6, new Employee(6, "emp6"));
expiringMap.put(7, new Employee(7, "emp7"));
printCache(expiringMap);
}
}
Output
Adding 5 employees
Sleeping for 3 seconds
Printing all the elements of cache
Key : 1 Value : Employee [id=1, name=emp 1]
Key : 2 Value : Employee [id=2, name=emp 2]
Key : 3 Value : Employee [id=3, name=emp 3]
Key : 4 Value : Employee [id=4, name=emp 4]
Key : 5 Value : Employee [id=5, name=emp 5]
Add two more elements
Printing all the elements of cache
Key : 3 Value : Employee [id=3, name=emp 3]
Key : 4 Value : Employee [id=4, name=emp 4]
Key : 5 Value : Employee [id=5, name=emp 5]
Key : 6 Value : Employee [id=6, name=emp6]
Key : 7 Value : Employee [id=7, name=emp7]
Previous Next Home
No comments:
Post a Comment