this.timeoutMillis = timeoutMillis;
this.daemon = daemon;
this.lock = new ReentrantLock();
this.condition = lock.newCondition();
this.state = ExecHandleState.INIT;
executor = new DefaultExecutorFactory().create(String.format("Run %s", displayName));
processLauncher = NativeServices.getInstance().get(ProcessLauncher.class);
shutdownHookAction = new ExecHandleShutdownHookAction(this);
broadcast = new ListenerBroadcast<ExecHandleListener>(ExecHandleListener.class);
broadcast.addAll(listeners);
}