JVM (по крайней мере, горячая точка) имеет концепцию, аналогичную "GIL", она просто намного более тонка в своей детализации блокировки, большая часть этого происходит от GC в горячей точке, которые являются более продвинутыми.
В CPython это одна большая блокировка (вероятно, это не так, но достаточно хорошо для аргументов), в JVM она более распространена с различными концепциями в зависимости от того, где она используется.
Взгляните, например, на vm / runtime / safepoint.hpp в коде горячей точки, который фактически является барьером. Как только в безопасном месте вся виртуальная машина остановилась в отношении кода Java, так же, как виртуальная машина Python останавливается на GIL.
В мире Java такие события приостановки виртуальной машины известны как «остановка мира», в эти моменты только нативный код, связанный с определенными критериями, работает свободно, остальная часть виртуальной машины была остановлена.
Также отсутствие грубой блокировки в java делает JNI намного более трудным для написания, так как JVM дает меньше гарантий относительно своей среды для вызовов FFI, одна из вещей, которую cpython делает довольно простой (хотя и не такой простой, как использование ctypes). ).