Le JVM (au moins hotspot) a un concept similaire au "GIL", il est juste beaucoup plus fin dans sa granularité de verrouillage, la plupart de cela vient des GC in hotspot qui sont plus avancés.
Dans CPython, c'est un gros verrou (probablement pas si vrai, mais assez bon pour les arguments), dans la JVM, il est plus répandu avec différents concepts en fonction de l'endroit où il est utilisé.
Jetez un œil, par exemple, à vm / runtime / safepoint.hpp dans le code du hotspot, qui est en fait une barrière. Une fois à un point de restauration, la machine virtuelle entière s'est arrêtée en ce qui concerne le code java, tout comme la machine virtuelle python s'arrête au GIL.
Dans le monde Java, ces événements de pause de VM sont connus sous le nom de "stop-the-world", à ces moments, seul le code natif lié à certains critères fonctionne librement, le reste de la VM a été arrêté.
De plus, l'absence de verrouillage grossier en java rend JNI beaucoup plus difficile à écrire, car la JVM offre moins de garanties sur son environnement pour les appels FFI, une des choses que cpython rend assez facile (bien que pas aussi facile que l'utilisation de ctypes).