Si procesos compiten por acceso a recursos compartidos se puede definir varios conceptos de justicia:
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 claro.
Normalmente se quiere que todos los procesos manifestan algún progreso en su trabajo. Sin embargo, eso no es necesario en programas concurrentes; se puede vivir bién con algunos procesos ``muertos'', mientras no dan otros problemas para el controlador (p.e., como llenar las tablas limitadas del sistema operativo). Siempre existe la posibilidad que el trabajo asignado a un proceso está hecho por otro proceso dejando el primero en espera infinita.