@Override
    public <T> Future<T> submit(Callable<T> task) {
        final RunnableFuture<T> rf = new CompletableFutureTask<>(task);
        execute(rf);
        return rf;
    }
@Test
    public void submitRunnable_withResult() throws Exception {
        final int taskCount = 10;
        ManagedExecutorService executorService = newManagedExecutorService(1, taskCount);

        final String result = randomString();
        Future[] futures = new Future[taskCount];
        for (int i = 0; i < taskCount; i++) {
            futures[i] = executorService.submit(() -> {
            }, result);
        }

        checkAllDone(Arrays.asList(futures));
        for (Future future : futures) {
            assertEquals(result, future.get());
        }
    }