Por que esse código leva a um java.lang.IllegalThreadStateException
?
newSingleThreadScheduledExecutor(Thread::startVirtualThread).scheduleWithFixedDelay(
() -> System.out.println("Hello, World!"),
0,
1,
TimeUnit.SECONDS
);
O JavaDoc java.util.concurrent.ThreadFactory
afirma explicitamente:
Um objeto que cria novos threads sob demanda.
... e Thread::startVirtualThread
é um Function<Runnable, Thread>
(objeto) que deveria fazer isso. Certo?
Imagino que a maneira pretendida seja provavelmente Thread.ofVirtual().factory()
, mas ainda não tenho a mínima ideia do porquê a outra função não funciona.