Concurrencia

Páginas: 3 (643 palabras) Publicado: 1 de julio de 2012
Tema 2

Algunos conceptos iniciales:
 MDE – Ingeniería basada en modelos

o En nuestro caso:

Métodos Synchronized

 Concurrencia = ejecución simultánea (no determinista) +interacción
 Interacción = comunicación + sincronización
 Sincronización = Exclusión mutua + por condición

En Java cada objeto tiene asignado algo que se le llama “monitor”. Mediante lapalabra clave Synchronized un thread puede “tomar” el monitor. Si otro thread intenta tomar el monitor del mismo objeto, el segundo thread se bloquea hasta que el primero suelte ese monitor.
El intérpreteJava toma el monitor del objeto y ejecuta las instrucciones del bloque. En cualquier caso en el que se salga del bloque el monitor es liberado. Esto incluye la salida por causa de alguna excepciónque se produzca. El mecanismo asegura que no exista el riesgo de que se salga de ese bloque sin liberar el monitor, lo que probablemente tarde o temprano haría que se congele todo el programa.
Losdos momentos críticos en los que dos threads separados pueden molestarse entre sí son claramente el momento del if y el momento en el que se invoca al método remove(0). Cuando un thread estápreguntando el valor de n no debe haber ninguno otro ni preguntando el valor de n, ni removiendo el valor de la pila. Esto podemos lograrlo tomando el monitor antes de todo este código y liberándolo después:class MesaDeEntradas
{
int n = 0;
Queue<Pedido> cola;

Pedido retirarPedido()
{synchronized(this)
{
if(n > 0)
{
n--;
return cola.remove(0);
}...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Concurrencia
  • Concurrente
  • concurrencia
  • Concurrencia
  • Concurrente
  • Concurrencia
  • CONCURRENCIA
  • Concurrencia

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS