You do realize that all these are about multiplexing multiple logical threads of execution on top of few physical threads of the executor? Getting this wrong alongside the Java argument (because Java retrofitted green threads - it could not adopt async/await, pushing it away from the scenarios .NET is already good at) does show me that you neither know how modern async runtimes are implemented nor understand the meaning behind the keywords repeated in every message.