Está en la página 1de 5

Programación Avanzada

Universidad del Aconcagua

Programación Avanzada
Java, Threads y Sonido: Ejemplos

Esp. Ing. César Aranda


unidatos@gmail.com

Licenciatura en Informática y Desarrollo de Software


v.2014

Hilos Libres

Ing. César Omar Aranda 2

Ing. César Omar Aranda 1


Programación Avanzada
Universidad del Aconcagua

Hilo para Recuperar Recursos

Ing. César Omar Aranda 3

Clases en javax.sound.sampled

Ing. César Omar Aranda 4

Ing. César Omar Aranda 2


Programación Avanzada
Universidad del Aconcagua

Concurrencia y Sincronización
 La concurrencia se produce cuando 2 o más threads
ejecutan un mismo método o acceden a un mismo dato.

 Hay que considerar casos de conflicto, como cuando un


thread está trabajando con un dato y llega otro y se lo
cambia

 Para evitar y o controlar estos problemas existen


mecanismos para sincronizar los threads:
 Bloqueo del objeto: synchronized;
 Uso de señales: wait y notify.

Ing. César Omar Aranda 5

Bloqueo de Objetos
 Para poder bloquear un objeto e impedir que otro thread
lo utilice mientras está el primero, se emplea la palabra
synchronized en la definición de los métodos
susceptibles de tener problemas de sincronización.
 public synchronized int getNumero();
 Cuando un thread está ejecutando un método
synchronized en un objeto, se establece un bloqueo en
dicho objeto. Los otros deben esperar su desbloqueo.
 Se crea una lista de espera y se irán ejecutando por
orden de llegada.
 El sistema de bloqueo/desbloqueo es algo gestionado
de forma automática por la JVM.
Ing. César Omar Aranda 6

Ing. César Omar Aranda 3


Programación Avanzada
Universidad del Aconcagua

Uso de Señales
 Sistema mediante el cual un thread puede detener su
ejecución a la espera de una señal lanzada por otro
thread.
 Para detener la ejecución y esperar a que otro thread
nos envíe una señal se utiliza el método wait()
 Puede ser una espera temporizada o permanente.
 Para enviar una señal a los threads que están
esperando en el objeto desde donde enviamos la señal
se utiliza el método notifyAll()
 O el método notify(), cuando el mensaje se envía a un
objeto en espera en particular.

Ing. César Omar Aranda 7

Ejemplo de Concurrencia

!!!???

Ing. César Omar Aranda 8

Ing. César Omar Aranda 4


Programación Avanzada
Universidad del Aconcagua

Ejemplo Sincronizado

Ing. César Omar Aranda 9

Ing. César Omar Aranda 5

También podría gustarte