akka threads JVM vs threads OS ao executar io

Pesquisei um pouco no site para ajudar a entender isso, mas não encontrei nada super claro, então pensei em publicar meu caso de uso e ver se alguém poderia esclarecer alguma coisa.

Eu tenho uma pergunta sobre o dimensionamento de threads jvm vs threads OS quando usado no akka para operações io. No site da akka:

@Akka suporta despachantes para ambos os encadeamentos leves controlados por eventos, permitindo a criação de milhões de encadeamentos em uma única estação de trabalho e os Atores baseados em encadeamento, em que cada despachante está vinculado a um encadeamento dedicado do S

Atualmente, os atores baseados em eventos consomem ~ 600 bytes por ator, o que significa que você pode criar mais de 6,5 milhões de atores com 4 GB de RA

Neste contexto, todos vocês podem me ajudar a entender como isso é mate em uma estação de trabalho com apenas 1 processador (para simplificar). Portanto, no meu exemplo de caso de uso, quero pegar uma lista de, digamos, 1000 'Usuários' e, em seguida, consultar um banco de dados (ou vários) para obter várias informações sobre cada usuário. Portanto, se eu despachasse cada uma dessas tarefas 'get' para um ator, e esse ator fará E / S, esse ator não bloquearia com base no limite de thread do sistema operacional para a estação de trabalho?

Como o modelo de ator akka me leva a um cenário como esse? Eu sei que provavelmente estou perdendo alguma coisa, pois não conheço muito bem o funcionamento das threads vm vs os threads, por isso, se uma das pessoas inteligentes aqui puder me explicar isso seria ótim

Se eu usar futuros, não preciso usar waitit () ou get () para bloquear e aguardar a respost

No meu caso de uso, independentemente dos atores, acabaria "sentindo" como se estivesse fazendo 1000 solicitações sequenciais de banco de dado

Se snips de código forem úteis para me ajudar a entender isso, o Java seria o preferido, pois ainda estou acelerando a sintaxe do scala - mas uma boa e clara explicação textual de como esses milhões de threads podem interoperar em uma única máquina processadora enquanto faz o banco de dados IO também ficaria be

questionAnswers(2)

yourAnswerToTheQuestion