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