I'm not sure language design should be a race to see who can add the most features, though.
I prefer Java's more thoughtful approach to introducing new features.
I prefer Java's more thoughtful approach to introducing new features.
In addition, green threads approach is a strictly worse and a more limited solution that only solves thread blocking without unlocking the variety of terse concurrency patterns enabled by the way the tasks are handled in .NET. They also add significant overhead to interop with native code due to thread pinning/stack switching (also applies to Go).