Ventajas/inconvenientes de la programación concurrente: Es más eficiente que la programación secuencial, pues permite aprovechar mejor los recursos máquina
Ventajas/inconvenientes de la programación concurrente: Permite en una misma aplicación múltiples actividades simultáneas, ofreciendo mejor servicio al usuario.
Ventajas/inconvenientes de la programación concurrente: La depuración es más sencilla que en la programación secuencial.
Ventajas/inconvenientes de la programación concurrente: La ejecución paralela de múltiples actividades puede plantear problemas en el acceso a algunos recursos
Utilización de hilos en Java: En Java solo se puede crear hilos si se utiliza el paquete java.util.concurrent.
Utilización de hilos en Java: El código a ejecutar por cada hilo debe estar contenido en su método start(), que puede reescribirse
Utilización de hilos en Java: Para asignar nombre a los hilos se puede pasar una cadena como argumento en su constructor
Utilización de hilos en Java: Los objetos definidos en Java se mantienen en el 'heap' y son compartidos por los hilos que tengan una referencia a ellos
Al ejecutar este programa llegan a generarse trece hilos.
Al ejecutar este programa se crean infinitos hilos.
Sólo dos de los hilos escriben algún mensaje por pantalla.
Este programa demuestra que crear un hilo no tiene efectos aparentes si no se llega a invocar su método start().
Sobre el estado de planificación de los hilos en Java: Si un hilo utiliza el método wait() de un objeto pasa del estado 'en ejecución' al 'preparado'
Sobre el estado de planificación de los hilos en Java: Thread.yield() hace que un hilo pase del estado 'preparado' al estado 'suspendido'
Sobre el estado de planificación de los hilos en Java: Los estados Blocked, Waiting y Timed-waiting de Java corresponden al estado 'suspendido' visto en Fundamentos de los Sistemas Operativos.
Sobre el estado de planificación de los hilos en Java: Un hilo Java no puede pasar directamente del estado 'en ejecución' al estado 'preparado'
Suponemos que el código de todos los hilos de un determinado programa esta protegido por un mismo 'lock' (cada hilo lo cierra al empezar y lo abre justo antes de terminar) Cumple trivialmente la propiedad de exclusión mutua (no es neceario reforzarlo en el código).
Suponemos que el código de todos los hilos de un determinado programa esta protegido por un mismo 'lock' (cada hilo lo cierra al empezar y lo abre justo antes de terminar) Fuerza a que los hilos siguieran una ejecución secuencial.
Suponemos que el código de todos los hilos de un determinado programa esta protegido por un mismo 'lock' (cada hilo lo cierra al empezar y lo abre justo antes de terminar) Obtenemos paralelismo real
Suponemos que el código de todos los hilos de un determinado programa esta protegido por un mismo 'lock' (cada hilo lo cierra al empezar y lo abre justo antes de terminar) No hay condiciones de carrera.
Un monitor...: gestiona automáticamente los mecanismos necesarios para garantizar exclusión mutua
Un monitor...: es indispensable para crear aplicaciones concurrentes en Java
Un monitor...: proporciona mecanismos para resolver la sincronización condicional.
Un monitor...: permite resolver problemas que no podemos resolver con los semáforos.
Para construir monitores en Java...: debemos añadir el calificador “synchronized” a cada uno de los métodos públicos de la clase
Para construir monitores en Java...: utilizamos la biblioteca java.lang.concurrency para garantizar exclusión mutua de manera automática.
Para construir monitores en Java...: utilizamos los métodos wait, notify y notifyAll (heredados de Object) para implantar exclusión mutua
Para construir monitores en Java...: utilizamos los métodos sleep() e interrupt() (heredados de la clase Thread) para implantar sincronización condicional.
Un monitor que siga el modelo de Hoare...: evita que múltiples hilos lleguen a compartir memoria.
Un monitor que siga el modelo de Hoare...: obliga a que en los métodos donde se invoca a notify(), ésta sea la última sentencia
Un monitor que siga el modelo de Hoare...: suspende (y deja en una cola especial de entrada) al hilo que ha invocado a notify(), activando a uno de los hilos suspendidos por wait().
Un monitor que siga el modelo de Hoare...: no reactiva a ningún hilo suspendido en wait() mientras el hilo notificador no abandone voluntariamente el monitor