Java
Java és un llenguatge de programació d'alt nivell orientat a objectes, compilat i interpretat. Els seus programes són compilats a bytecode, que és interpretat per la màquina virtual de Java (JVM). Aquesta màquina virtual és un procés que s'encarrega de gestionar la memòria i els seus fils d'execució.
El call stack de Java pot contenir dades primitives i referències a objectes. Els objectes es guarden al heap, i el Garbage Collector s'encarrega de gestionar la seva memòria.
El llenguatge Java implementa la concurrència fent ús del model d'estat compartit i fils.
Una aplicació Java pot crear processos addicionals utilitzant ProcessBuilder. Aquesta classe permet crear processos de sistema (Process) i executar-los, parar-los, llegir la seva sortida, reencaminar-la, etc. Resumint, permet interactuar amb altres processos de sistema que no siguin de la màquina virtual Java.
Tanmateix, Java basa la seva implementació de concurrència en la utilització de fils d'execució, que serà el que veurem a continuació. Aquesta es pot implementar a dos nivells: l'API de baix nivell basada en fils i els objectes concurrents d'alt nivell.