Java virtual threads
Hacker ApprovedConcurrency feature in Developer tools
Lets developers write simple blocking-style code that scales under load, without async/await, and shares the native thread interface. Critics point to carrier thread pinning.
Lets developers write simple blocking-style code that scales under load, without async/await, and shares the native thread interface. Critics point to carrier thread pinning.
27 people gave an opinion
- recommend it
- 21
- criticize it
- 6
- approval share
- 78%
Recommended in 8 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: not recommended
- February 2026: not recommended
- March 2026: recommended
- April 2026: recommended
- May 2026: recommended
- June 2026: recommended
- July 2026: not recommended
- August 2026: not recommended
- September 2026: recommended
- October 2026: recommended
- November 2026: not recommended (month in progress)
Why it carries the badge
- 21 people recommend itNeeds 10 or more, met.
- 3.5 recommenders for every criticNeeds 2 to 1 or better, met.
- Recommended in 8 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Avoids async/await complexity
“I did not think the benefits of better performance under load is worth the mental overhead of doing async everywhere.”
Comment from 12 Sep 2026 in “A Design Space Exploration of Async/Await” “With Java 25 virtual threads, async definitely is no longer required”
Comment from 1 Nov 2025 in “Async/Await is finally back in Zig” “Loom reduces the need to use them as the default application model”
Comment from 24 May 2026 in “dotNET (OK, C#) gets union types” - Comment from 25 Apr 2026 in “What Async Promised and What It Delivered”
Avoids function coloring
“I think green threads (Java Virtual Threads, Go to an extent) are strictly superior to async/await.”
Comment from 1 Nov 2025 in “Async/Await is finally back in Zig” “Java Virtual Threads are a superior paradigm to C#'s async/await and function coloring.”
Comment from 24 May 2026 in “dotNET (OK, C#) gets union types” “Look at Go or Java virtual threads. Async I/O doesn't need function coloring.”
Comment from 4 Dec 2025 in “Zig's new plan for asynchronous programs” - Comment from 25 Apr 2026 in “What Async Promised and What It Delivered”
Cheap threads that scale under load
“I did not think the benefits of better performance under load is worth the mental overhead of doing async everywhere.”
Comment from 12 Sep 2026 in “A Design Space Exploration of Async/Await” “Java is achieving that goal waaay better with virtual threads and structured concurrency”
Comment from 18 Oct 2026 in “Java sealed classes and exhaustive pattern matching” “simply asked why they have to be expensive and then made them not expensive”
Comment from 12 Sep 2026 in “A Design Space Exploration of Async/Await” - Comment from 18 Mar 2026 in “Java 26 is here, and with it a solid foundation for the future”
Sequential code, hidden implementation
“you have straightforward sequential code in the process and the actual implementation is invisible to the user”
Comment from 5 May 2026 in “Async Rust never left the MVP state” “They share the same interface with native threads and free developers from the burdens of async programming.”
Comment from 27 Apr 2026 in “What Async Promised and What It Delivered”
What people warn about
Each mark is one comment
Slow, rocky adoption
“being 10 years late to the party is pretty bad”
Comment from 27 Sep 2026 in “Go Concurrency Distilled” “Java's rocky adoption of virtual threads”
Comment from 23 Oct 2026 in “Docker is weird”
What people said
26 of the 27 comments that mention it, newest first. Each links to the original comment.
“Java's rocky adoption of virtual threads”
“Java is achieving that goal waaay better with virtual threads and structured concurrency”
“Java's virtual threads are not preemptive.”
“being 10 years late to the party is pretty bad”
“I did not think the benefits of better performance under load is worth the mental overhead of doing async everywhere.”
“simply asked why they have to be expensive and then made them not expensive”
“Java Loom Virtual Threads (which I haven't used), etc.”
“Java Virtual Threads and chill”
“Structure concurrency/virtual threads seem like a good fit for Swing”
“Loom reduces the need to use them as the default application model”
“Both are, IMO, inferior to Ada's TASK construct.”
“Clearly legacy heavy weight threads, virtual or not, are not superior.”
“Java Virtual Threads are a superior paradigm to C#'s async/await and function coloring.”
“virtual threads are great this time around”
“you have straightforward sequential code in the process and the actual implementation is invisible to the user”
“They share the same interface with native threads and free developers from the burdens of async programming.”
“the async stuff just feels like lipstick on a pig”
“they work extremely well now”
“Those do away with coloring by attacking the root of the problem”
“java virtual threads are superior for the vast majority of use cases”
“Causing carrier threads to get pinned is still not good”
“we now have a more general solution that doesn't lead to API duplication (virtual threads)”
“Look at Go or Java virtual threads. Async I/O doesn't need function coloring.”
“solve this problem in a much better way than most other languages”
“I think green threads (Java Virtual Threads, Go to an extent) are strictly superior to async/await.”
“With Java 25 virtual threads, async definitely is no longer required”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.