Here’s my take:
No. Minecraft already uses multiple threads when available. Vanilla minecraft, mind you. However, using multiple threads is misleading because it is definitely not the scale-able performance you’d expect when somebody says a game is programmed multi-threaded.
From a technical perspective, Minecraft (vanilla) runs these in separate threads:
- normal game loop (does all the logic of all the entities/players)
- chat
- chunk loading
Now, #1 and #3 are pretty important things to have split up, and this improved performance quite a bit–but this has been around for a long time now, so it’s nothing new or anything to get excited about.
What we really do care about, which we will likely not get for some time to come, is having the #1 normal game loop multi-threaded. Most of what uses up CPU and is the bottleneck is how all the monsters, plants, animals, water, and sun get calculated to behave. If the game loop was multi-threaded, it would require unbelievably drastic changes to the codebase, something which probably isn’t too appealing for Mojang/MS to invest into.
Minecraft will automatically start leveraging the threads and cores it has available. Just as with other games you play, you typically do not have to go into settings or configuration to say “use my 8 cores”–it just knows to.
It’s no different for Minecraft. If you have one core, and Minecraft makes three threads, then your one core will service all three threads. If you have multiple cores and Minecraft makes three threads, then maybe numerous cores will service the three threads. One way or another, the performance gain we want isn’t really in the use of multiple threads or cores, but the appropriate splitting of work from the game loop…which isn’t here yet.
Java tweaks have been a contentious issue for years now, and many people claim that a lot of difference can be made from tweaking java variables here and there. Half a decade ago I put in my two cents on the bukkit forum–there’s multiple replies there by me, “Will D” #1 #2 #3.
I really recommend it…but I am a bit biased being the author. That said, the information I wrote there still holds up today and will help give some perspective to what Java tweaks can and cannot do for improving performance.
TLDR; all the Java tweaks in the world can, at best, help prevent some degree of sluggishness from a server that is resource-limited. all the Java tweaks in the world cannot improve Minecraft performance close to what a multi-threaded rewrite could do for Java.
From the Bukkit original staff:
All of these threads detailing how to optimise the JVM are misleading and inaccurate. Generally, the JVM is pretty good at optimising itself based on the environment the JVM is running in (with a few obvious exceptions). Any other optimisations require a lot of time and trial and error to figure out what configuration is right for your server. Every java application is different, and on top of this, every server environment is different too.