3 ms·
Funnily, Java's original threads (back in 1997) were green threads, but they got dropped in favor of native threads.
by gamegoblin 12y ago
Funnily, Java's original threads (back in 1997) were green threads, but they got dropped in favor of native threads.
- cpeterso 12y agoRust supports both native and green threads, but defaults to native threads.
- dragonwriter 12y agoIIRC, Java's original threads were N:1 green threads, while the lightweight threads in Haskell discussed above are M:N green threads. N:1 is easier to implement, and fine for single core systems, but doesn't give you real parallelism. M:N, like 1:1 native threading, gives you real parallelism, but also, like N:1, cheap concurrency (at the expense of being the hardest to implement well.) Multicore processors and the fact that single-threaded performance basically hit a wall explains why an N:1 threading models in something with the use cases of Java fell out of favor. M:N, while still "green threads", has a somewhat different set of trade-offs versus 1:1 native threads than N:1 does, though.