Next:
Curso
Up:
Concurrencia y Distribución
Previous:
Concurrencia y Distribución
Índice General
Curso
Objetivos
Sobre este documento
Introducción
De qué se trata?
Procesos
Aplicación
Indicadores
Recursos
Ejemplos
Implementación
Crítica
Hilos de Java
Java
Hola mundo
Repaso de Java
Clases
Modificadores de clases
Comentarios
Tipos simples
Modificadores de miembros
Estructuras de control
Operadores
Palabras reservadas
Objetos y referencias a objetos
Parámetros
Valores de retorno
Arreglos
this and super
Extender clases
Clases dentro de clases
Clases locales
La clase Object
Clonar objetos
Interfaces
Clases y paquetes
Excepciones
Paquetes
Conversión a flujos de bytes
Reflexión
Hilos
Crear un hilo
La interfaz Runnable
Sincronización
Objetos síncronos
Los monitores de Java
Java y seguridad
Atomicidad en Java
Repaso: programación secuencial
Primer algoritmo concurrente
Abstracción
Instrucciones atómicas
Regiones críticas
Funcionamiento correcto
Exclusión mutua a nivel bajo
Algoritmo de Dekker
Primer intento
Segundo intento
Tercer intento
Cuarto intento
Quinto intento
Algoritmo de Lambert
Otros algoritmos
Ayuda con hardware
Test-and-set
Exchange
multi-prefix
Propriedades de programas concurrentes
Seguridad y vivacidad
Justicia entre procesos
Espera activa de procesos
Espera infinita o inanición de procesos
Exclusión mutua a nivel alto
Semáforos
Regiones críticas
Regiones críticas condicionales
Monitores
Problema del productor y consumidor
Comunicación y sincronización
Bloqueo
Detectar y actuar
Evitar
Prevenir
Programación orientada a objetos
Patrones de diseño para aplicaciones concurrentes
Reactor
Proactor
Ficha de terminación asíncrona
Aceptor-Conector
Guardián
Interfaz segura para multi-hilos
Aviso de hecho
Objetos activos
Monitores
Mitad-síncrono, mitad asíncrono
Líder-y-Seguidores
Concurrencia en memoria distribuida
Paso de mensajes
Tipos de sincronización
Identificación del otro lado
Prioridades
Terminación de programas
Detección de terminación
Tareas de programación
Soluciones
Bibliografía
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática