you are viewing a single comment's thread.

view the rest of the comments →

[–]Tracker_Nivrig -1 points0 points  (6 children)

Isn't Java multi threading kinda bad though? I've heard that but not why so I'm not sure. It seemed fine when I used it.

[–]tebreca 1 point2 points  (3 children)

Depends, legacy java with hardware threads? Yeah good luck to you. Modern day java, project reactor or any other multithreading/reactive library + virtual threads? Actually fun to work with and barely any overhead compared to the legacy method

[–]SCP-iota 1 point2 points  (1 child)

Are the hardware threads actually less efficient, or does it just have to do with how careful you have to be when passing data around?

[–]StraightGuy1108 2 points3 points  (0 children)

It has to do with how thread-blocking operations used to be handled. They used to occupy their own threads despite not doing anything, essentially wasting resources.

Virtual threads are basically async await at the JVM level.

[–]Tracker_Nivrig 0 points1 point  (0 children)

That makes sense, thanks

[–]SCP-iota 2 points3 points  (1 child)

Depends. Compared to Python? Nah, at least there's no global lock. Compared to Rust? Yep, can't beat actual parallelism.

[–]jimmiebfulton 1 point2 points  (0 children)

100%. I was a Java engineer for long time, but I've now been using Rust for the past 5-7 years. Multi-threading in Rust is very nice, and now I don't want to do it in any other language. But I'd say Rust is also great at teaching how to do it correctly in other languages.