G.Bordel >Docencia >TAP | Técnicas Actuales de Programación | (curso 2010-2011) | |||||||
|
|||||||||
tema_anterior | Tema 10: Hilos | tema_siguiente |
|
10.3- Distribución de la CPU. Prioridades. El problema de la "inanición"
Es importante conocer el mecanismo de selección de hilos para su ejecución cuando trabajamos con ellos. Este mecanismo en Java tiene en cuenta las prioridades: cada hilo tiene asignado un valor de prioridad que copia del hilo que lo ha generado. Este valor puede ser cualquier entero entre 1 (Thread.MIN_PRIORITY) y 10 (Thread.MAX_PRIORITY) , siendo el valor inicial para el hilo "main" el 5 (Thread.NORM_PRIORITY). El modo de selección es el siguiente:
![]() Ejemplo de asignación de tiempo de CPU a tareas con distintas prioridades.. |
Estas prioridades pueden ser consultadas o cambiadas en tiempo de ejecución mediante los métodos getPriority
y setPriority
Si el procesamiento que se lleva a cabo supone una elevada exigencia para la potencia de procesamiento disponible, una buena estructuración de la solución en hilos y una acertada distribución de sus prioridades es realmente un aspecto importante a conseguir. En tales casos, aparte de una buena solución de partida puede ser necesaria una fase de pruebas con objeto de determinar los valores más adecuados.
Una distribución inadecuada de las prioridades puede dar lugar a que algún proceso no llegue a ejecutarse nunca y en consecuencia a que la ejecución no sea correcta aún cuando no haya errores de codigo relacionados con ello. Esta situación es conocida como "inanición", y en general se habla de "inanición" no sólo cuando un proceso no dispone de CPU a lo largo del tiempo sino cuando no dispone de cualquier recurso que le resulte necesario (memoria, un periférico, etc).
Siguiente punto: 10.4- Mecanismos de sincronización de hilos. El problema del interbloqueo
Plataforma de soporte a curso y contenidos (c) German Bordel 2005. |