execute
принимает Runnable
и затем вызывает его метод run
в какой-то момент.
В своем вопросе вы продемонстрировали два способа передачи execute
a Runnable
:
передача объекта, который реализует Runnable
:
executorService.execute(new LongRunningTask());
передача лямбда-выражения, которое не принимает аргументов:
executorService.execute(() -> new LongRunningTask());
В первом случае будет вызван new LongRunningTask().run()
. Предположительно, это метод, который вы реализовали в //stuff happening here
. Это код, который вы хотите запустить, верно?
Во втором случае лямбда-выражение равно run
методу Runnable
, поэтому будет запускаться new LongRunningTask()
. Обратите внимание, что это не вызывает run
метод LongRunningMethod
(код, который вы хотите выполнить). Это просто вызывает конструктор.
Если вы действительно хотите использовать лямбда-выражение (хотя я не вижу смысла), вы можете сделать:
executorService.execute(() -> new LongRunningTask().run());