class ThreadMonitor {

    public void watchThread(final ExecutorService service, final Runnable runnable) {
        Reject.ifNull(service, runnable);
        workPool.submit(new WatchDog(new StartThread() {
            public Future<?> start() {
                return service.submit(runnable);
            }

            @Override
            public String toString() {
                return "Executable: " + runnable.toString();
            }
        }));
    }

    @Inject public  ThreadMonitor(ExecutorService workPool,
                         ShutdownManager shutdownManager,
                         @Named(SharedGuiceModule.DEBUG_THREAD_MANAGER) Debug debug);

}