Pour le système d'exploitation, un programme Java est un processus. Pour la machine virtuelle Java, un programme Java est souvent composé de plusieurs threads qui s'exécutent en parallèle, et est donc perçu comme ceci :
Un programme Java est donc spécifié par l'ensemble des exécutions concurrentes des différents threads qui le composent.