Java's thread support is as correct as can be and provides sufficient primitives that if you can't use a multi-core machine efficiently it is your fault, not the fault of your language and runtime. Same for C#.
This holds for "high-level" resources.Wwith the multi-threaded model you can share a single large immutable configuration object between all threads, or pass a database connection from one thread to another with close-to-zero cost.
Java and C# languages are a bit more CPU efficient. In the cloud computing world a website publisher pays real money for server CPU and RAM but can use the CPU and RAM on your computer or phone for free.
This holds for "high-level" resources.Wwith the multi-threaded model you can share a single large immutable configuration object between all threads, or pass a database connection from one thread to another with close-to-zero cost.
Java and C# languages are a bit more CPU efficient. In the cloud computing world a website publisher pays real money for server CPU and RAM but can use the CPU and RAM on your computer or phone for free.