Un programa concurrente es un programa que tiene más de una línea lógica de ejecución, es decir, es un programa que parece que varias partes del mismo se ejecutan simultáneamente. Un ejemplo de de esto es un programa que realice determinada función y, simultáneamente, exponga datos en la pantalla. Un programa concurrente puede correr en varios procesadores simultáneamente o no. Esta importancia de la concurrencia es especialmente destacable en sistemas operativos como Linux, que además de concurrentes, presentan unos mecanismos de concurrencia estables.
Los hilos son otra forma de crear la posibilidad de concurrencia de actividades; sin embargo, la gran diferencia es que los hilos comparten el código y el acceso a los datos. En cierta manera es como tener dos "program counters" para un mismo código.