title: A TTL(Time to live) eviction based priority queue
body: <p>I require a data structure which satisfies the following properties:-</p>
  
  <ol>
  <li>Get max in O(1)</li>
  <li>Insert in O(log n)</li>
  <li>Delete max in O(log n) (Bonus points on delete ANY in O(log n))</li>
  <li>Delete is ONLY called whenever a particular TTL (time to live) is crossed.</li>
  </ol>
  
  <p>Operation 4 only needs to be eventually consistent, but a bounded time complexity would be very good nice to have. </p>
  
  <p>1, 2 and 3 is the standard priority queue using the heap data structure. However short of implementing an eviction thread on my own, I do not see any way to implementing 4. I have two questions:</p>
  
  <ul>
  <li>What is the best approach to implementing 4?</li>
  <li>Is there an existing implementation in Java or any other JVM based lang that I can directly consume without writing the eviction policy myself?</li>
  </ul>