Bienvenido
Introducción
Vademécum
call (método) V call()
Ejemplo
Carreras [race conditions] (concepto)
Cerrojo [lock] (concepto)
Ejemplo
Colas de comunicación entre threads
Concurrencia (concepto)
Concurrent collections (clases)
Condición [condition] (concepto)
Ejemplo
Deadlock [interbloqueo] (concepto)
Demonio [daemon] (concepto)
Ejecutor [Executor] (concepto)
Ejemplo
Equidad [fairness] (concepto)
Excepciones [exceptions]
Fairness [equidad] (concepto)
Hebra [thread] (concepto)
Hilo [thread] (concepto)
IllegalMonitorStateException [excepción] java.lang…
Inanición [starvation] (concepto)
Interbloqueo [deadlock] (concepto)
Interrupciones (concepto)
Ejemplo
interrupt (método) void interrupt()
interrupted (método) static boolean interrupted()
InterruptedException (excepción)
isInterrupted (método) boolean isInterrupted()
join (método) void join()
Livelock (concepto)
Liveness [vivacidad] (concepto)
Lock [cerrojo] (concepto)
Monitor (concepto)
Mutex (concepto)
notify (método) void notify()
notifyAll (método) void notifyAll()
Operación atómica (concepto)
Race conditions [carreras] (concepto)
Reentrante [reentrant] (concepto)
run (método) void run()
Safety [seguridad] (concepto)
Sección critica
Seguridad [safety] (concepto)
Semáforo [semaphore] (concepto)
Ejemplo: semáforo binario
Ejemplo: semáforo con N permisos
Sincronizadores (concepto)
sleep (método) void sleep(long)
start (método) void start()
Starvation [inanición] (concepto)
stop (deprecated) void stop()
synchronized (palabra reservada)
Zonas de exclusión mutua
Métodos sincronizados
Reentrante [reentrant mutex]
Terminación abrupta
Variables volatile en zonas synchronized
Ejemplo: bloque de sentencias sincronizado
Ejemplo: cuenta corriente
Solución con zonas de exclusión mutua
Solución con métodos sincronizados
Thread [hilo] (concepto)
¿Cómo se crea un thread? Opción 1: new Thread(Runnable)
¿Cómo se crea un thread? Opción 2: extends Thread
¿Cómo se arranca un thread?
¿Cuándo termina un thread?
¿Cuándo acaba el programa?
¿Cómo se para un thread?
¿Cómo espera un thread a que otro termine?
¿Cómo se le pasan valores a un thread?
Thread-safe (concepto)
Variables atómicas
Vivacidad [liveness] (concepto)
volatile (palabra reservada)
volatile en synchronized
wait() (método)
while(condición) { wait(); }
yield() (método) void yield()
Ejemplo
Zona crítica (concepto)
Zonas de exclusión mutua (concepto)
Ejemplo
Las Bibliotecas de Java
AtomicBoolean (class) java.util.concurrent.atomic
AtomicInteger (class) java.util.concurrent.atomic
AtomicIntegerArray (class) java.util.concurrent.atomic
AtomicLong (class) java.util.concurrent.atomic
AtomicLongArray (class) java.util.concurrent.atomic
BlockingQueue
(interface) java.util.concurrent
Ejemplo
Callable
(interface) java.util.concurrent
ConcurrentMap
(interface) java.util.concurrent
Condition (interface) java.util.concurrent.locks
CopyOnWriteArrayList
(class) java.util.concurrent
Ejemplo
CopyOnWriteArraySet
(class) java.util.concurrent
CountDownLatch (class) java.util.concurrent
Ejemplo 1. Señal de salida: arranque sincronizado
Ejemplo 2. Señal de fin: sincronización de llegada
CyclicBarrier (class) java.util.concurrent
Ejemplo
Exchanger (class) java.util.concurrent
Ejemplo
Executor (interface) java.util.concurrent
Executors (factory) java.util.concurrent
ExecutorService (interface) java.util.concurrent
Future
(interface)
Lock (interface) java.util.concurrent.locks
PipedInputStream (class) java.io
PipedOutputStream (class) java.io
PipedReader (class) java.io
PipedWriter (class) java.io
ReadWriteLock (interface) java.util.concurrent.locks
Runnable (interface) java.lang
ScheduledExecutorService (interface) java.util.concurrent
ScheduledFuture
(interface) java.util.concurrent
Semaphore (class) java.util.concurrent
Thread (clase) java.lang
Estado
Prioridad
ThreadGroup (class) java.lang
Timer (class) java.util
Ejemplo
TimerTask (class) java.util
Diccionario
Acrónimos
Términos en inglés