Ale prd není efektivní, když voláš nějakou vzdálenou službu, nebo čekáš na výsledek dotazu v databázi, nebo něco stahuješ, tak je ti jedno, že máš 100 threadů a jen 2 jádra.
Neni to jedno, protoze kazde to jadro ma rezii na vytvoreni, zasobnik (a obecne TLS), scheduler, ale je pravda, ze se to pouziva aspon v nekterych pripadech (ale urcite to neni dobry napad pri 100 threadech). Kazdopadne u takoveho pripadu neni vubec vhodne pouzit default pool, ale vlastni. Smyslem default poolu je prave byt prizpusobeny efektivnejsimu zpracovani paralelnich (vypocetnich) uloh na danem HW.
Ale stejne nevidim moc zadny duvod proc treba pro provolani vzdalene sluzby nepouzit radeji asynchronni / event driven API. U JDK 9+ je na to HttpClient, pouzit ho umi napr. Spring WebClient.
U databaze (pokud to neni nejaka NoSQL) to samozrejme nejde, protoze JDBC a sprava transakci, ale tam zase tezko bude hrozit 100 vlaken a nebo je to velmi mizerny design, pokud by jeden request udelal tolik spojeni do DB :-)