Cuando los procesos compiten por el acceso a recursos compartidos se puede definir varios conceptos de justicia, por ejemplo:
Los dos primeros conceptos no son muy prácticos porque dependen de términos infinitamente o el algún momento, sin embargo, pueden ser útiles en comprobaciones formales.
En un sistema distribuido la ordenación en tiempo no es tan fácil de realizar dado que la noción de tiempo no está tan clara (lo veremos más adelante).
Normalmente se quiere que todos los procesos manifesten algún progreso en su trabajo. Sin embargo, eso no es una condición necesario en programas concurrentes; se puede vivir bien--en ciertas cituaciones--con algunos procesos ``muertos'', mientras no den otros problemas para el controlador (por ejemplo, llenar las tablas limitadas del sistema operativo). Siempre existe la posibilidad que el trabajo asignado a un proceso sea hecho por otro proceso dejando el primero en espera.