Ваше помещение неправильно. Этот вызов по умолчанию не равен Callable
. Выбор осуществляется с помощью формы лямбда-выражения, т.е. возвращает ли он значение:
ExecutorService service = null;
// somewhere in the code the executorService is used this way:
// invokes submit(Runnable)
service.submit(() -> { });
// invokes submit(Runnable)
service.submit(() -> { return; });
// invokes submit(Callable)
service.submit(() -> "foo");
// invokes submit(Callable)
service.submit(() -> { return "foo"; });
// in case you really need disambiguation: invokes submit(Runnable,null)
service.submit(() -> { throw new RuntimeException(); }, null);
// dito (ignoring the returned value)
service.submit(this::toString, null);
Обратите внимание, что если вам не нужно возвращаемый Future
, вы можете просто использовать execute(Runnable)
непосредственно Ставить на Runnable
, а чем его обертывание в FutureTask
.
Вы можете определить его выше как экземпляр runnable –
Конечно, но как это сделать с лямбдами? – pr0gma