If there is one thing Java is good at it's multithreading with shared references, it's basically the only language with a GC and multithreading support.
However for high performance compute heavy engine, it will be much slower and memory hungry than both Nim and C++ due to pointer indirections/locality of reference issues. >From a performance perspective, a single data structure hammered by multiple >threads is a bad idea, whichever language you chose. That is an architecture >issue not a programming language issue. Your engine will not scale to 16 cores >whether you use C++, java or Nim.
