There isn't a built in way, so you will have to build your own. The basic strategy would be to have a Map that had a java.util.Timer running in it. Each DTO is immutable, so every change requires a replacement in the Map (instead of an in-place modification). Each new change adds a task to the timer to remove the DTO from the Map at the expiry time. Removing an item from the Map would also need to cancel the associated task from the Timer (and each replacement would need to be a delete from the Map followed by an Add).
This sounds a lot like a time-sensitive Cache. You can look at this
article on JavaRanch discussing caching, which also links to pre-made implementations. Maybe it would be helpful.