I will compare my NIO multiplayer system to SVTwP (Sync. Virt. Threads without Pinning) and report back!
Theoretically it means, Java has now bettered Node.js "async / await" approach and that too without the two colored function approach. One process can now spawn thousands of threads to service IO and none of those threads are blocking / waiting (and with this release there is no gotcha / pitfall remaining).
Not mention all the Netty / reactive libraries have no use now (not that I am complaining).
Netty uses an eventloop/async paradigm. The benefit of that style is you do not need any locking (within the same eventloop). How does virtual threads make that of no use?
Is it good practice or not to use locking semantics if you use virtual threads?
understandable. Normal java threads have underlying OS threads, which have their own stack and memory overhead. virtual threads are much lighter in this sense.