package com.netflix.governator.guice.runner.events;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
/**
* Used mainly for testing the SelfDestructingTerminationEvent will fire the main TerminateEvent
* after a specified amount of time has elapsed, causing the application to exit.
* @author elandau
*/
public class SelfDestructingTerminationEvent extends BlockingTerminationEvent {
public SelfDestructingTerminationEvent(final long timeout, final TimeUnit units) {
Executors.newScheduledThreadPool(1, new ThreadFactoryBuilder().setDaemon(true).build())
.schedule(new Runnable() {
@Override
public void run() {
terminate();
}
}, timeout, units);
}
}