E aí, dev que vive de ExecutorServicee CompletableFuture? Já tentou criar 10 mil threads na mão? O OutOfMemoryError vem cantando. Isso porque as threads clássicas do Java (agora chamadas de platform threads) são, basicamente, wrappers finos de threads do sistema operacional. Elas são caras – cada uma consome cerca de 20 MB de memória só de pilha (stack).
Mas a partir do JDK 21, temos as virtual threads – leves, baratas. Vamos entender sem mistério.
Uma thread de plataforma = uma thread do SO.
Isso é caro em tempo (criação lenta) e espaço (stack enorme: ~20 MB).
O escalonador do SO também tem trabalho para trocar o contexto entre elas.









