@Override
    public void start() {
        if (isStarted() || isDisposed()) {
            log.warn("Controller {} is already started or disposed.", getName());
            return;
        }
        this.started = true;
        log.info("Starting controller {}", name);
        IntStream.range(0, getWorkerCount())
            .mapToObj(i -> new Worker())
            .forEach(executor::submit);
    }
@Test
    void shouldCreateMultiWorkers() {
        controller = createController(5);
        controller.start();
        verify(executor, times(5)).submit(any(DefaultController.Worker.class));
    }