* this task will actually wait for a longer time than the {@link #TIMEOUT} value before
* to execute, in order to increase the chances to process many (un)marshallers at once.
*/
private void scheduleRemoval() {
if (isRemovalScheduled.compareAndSet(false, true)) {
DelayedExecutor.schedule(new DelayedRunnable(System.nanoTime() + 2*TIMEOUT) {
@Override public void run() {
removeExpired();
}
});
}