|
|
Dept. de Ingeniería de Sistemas Telemáticos E.T.S.I. de Telecomunicación Universidad Politécnica Madrid |
Java Vademécum /concurrencia |
José A. Mañas 23 de abril de 2017 |
Índice
Introducción........................................................................................................................................................................... 6
Vademécum............................................................................................................................................................................ 7
1. call (método) V call().......................................................................................................................................... 7
1.1. Ejemplo.......................................................................................................................................................... 7
2. Carreras [race conditions] (concepto)....................................................................................................... 9
3. Cerrojo [lock] (concepto)................................................................................................................................. 9
3.1. Ejemplo.......................................................................................................................................................... 9
4. Colas de comunicación entre threads...................................................................................................... 10
5. Concurrencia (concepto)............................................................................................................................... 10
6. Concurrent collections (clases)................................................................................................................... 11
7. Condición [condition] (concepto).............................................................................................................. 11
7.1. Ejemplo....................................................................................................................................................... 11
8. Deadlock [interbloqueo] (concepto)........................................................................................................ 14
9. Demonio [daemon] (concepto)................................................................................................................... 14
10. Ejecutor [Executor] (concepto)............................................................................................................. 14
10.1. Ejemplo....................................................................................................................................................... 15
11. Equidad [fairness] (concepto)............................................................................................................... 16
12. Excepciones [exceptions]......................................................................................................................... 16
13. Fairness [equidad] (concepto)............................................................................................................... 17
14. Hebra [thread] (concepto)....................................................................................................................... 17
15. Hilo [thread] (concepto)........................................................................................................................... 17
16. IllegalMonitorStateException [excepción] java.lang…................................................................ 17
17. Inanición [starvation] (concepto)........................................................................................................ 18
18. Interbloqueo [deadlock] (concepto)................................................................................................... 18
19. Interrupciones (concepto)....................................................................................................................... 18
19.1. Ejemplo....................................................................................................................................................... 19
20. interrupt (método) void interrupt()................................................................................................... 20
21. interrupted (método) static boolean interrupted()..................................................................... 20
22. InterruptedException (excepción)....................................................................................................... 20
23. isInterrupted (método) boolean isInterrupted().......................................................................... 21
24. join (método) void join().......................................................................................................................... 21
25. Livelock (concepto).................................................................................................................................... 22
26. Liveness [vivacidad] (concepto)........................................................................................................... 22
27. Lock [cerrojo] (concepto)........................................................................................................................ 22
28. Monitor (concepto)..................................................................................................................................... 22
29. Mutex (concepto)......................................................................................................................................... 22
30. notify (método) void notify()................................................................................................................. 22
31. notifyAll (método) void notifyAll()...................................................................................................... 23
32. Operación atómica (concepto)............................................................................................................... 23
33. Race conditions [carreras] (concepto)............................................................................................... 23
34. Reentrante [reentrant] (concepto)...................................................................................................... 24
35. run (método) void run()........................................................................................................................... 24
36. Safety [seguridad] (concepto)................................................................................................................ 24
37. Sección critica................................................................................................................................................ 24
38. Seguridad [safety] (concepto)................................................................................................................ 24
39. Semáforo [semaphore] (concepto)...................................................................................................... 25
39.1. Ejemplo: semáforo binario................................................................................................................. 25
39.2. Ejemplo: semáforo con N permisos................................................................................................ 26
40. Sincronizadores (concepto).................................................................................................................... 27
41. sleep (método) void sleep(long)........................................................................................................... 27
42. start (método) void start()...................................................................................................................... 27
43. Starvation [inanición] (concepto)........................................................................................................ 28
44. stop (deprecated) void stop()................................................................................................................ 28
45. synchronized (palabra reservada)....................................................................................................... 28
45.2. Ejemplo: bloque de sentencias sincronizado............................................................................. 29
45.3. Ejemplo: cuenta corriente.................................................................................................................. 30
46. Thread [hilo] (concepto).......................................................................................................................... 32
47. Thread-safe (concepto)............................................................................................................................. 36
48. Variables atómicas...................................................................................................................................... 36
49. Vivacidad [liveness] (concepto)............................................................................................................ 37
50. volatile (palabra reservada).................................................................................................................... 37
51. wait() (método)............................................................................................................................................ 37
51.1. while(condición) { wait(); }................................................................................................................ 37
52. yield() (método) void yield().................................................................................................................. 38
52.1. Ejemplo....................................................................................................................................................... 38
53. Zona crítica (concepto)............................................................................................................................. 39
54. Zonas de exclusión mutua (concepto)................................................................................................ 39
54.1. Ejemplo....................................................................................................................................................... 40
Las Bibliotecas de Java.................................................................................................................................................... 41
1. AtomicBoolean (class) java.util.concurrent.atomic........................................................................... 41
2. AtomicInteger (class) java.util.concurrent.atomic............................................................................. 41
3. AtomicIntegerArray (class) java.util.concurrent.atomic................................................................. 42
4. AtomicLong (class) java.util.concurrent.atomic.................................................................................. 42
5. AtomicLongArray (class) java.util.concurrent.atomic...................................................................... 43
6. BlockingQueue<E> (interface) java.util.concurrent.......................................................................... 43
6.1. Ejemplo....................................................................................................................................................... 43
7. Callable<V> (interface) java.util.concurrent......................................................................................... 44
8. ConcurrentMap<K, V> (interface) java.util.concurrent.................................................................... 45
9. Condition (interface) java.util.concurrent.locks.................................................................................. 45
10. CopyOnWriteArrayList<E> (class)
java.util.concurrent............................................................. 45
10.1. Ejemplo....................................................................................................................................................... 45
11. CopyOnWriteArraySet<E> (class)
java.util.concurrent.............................................................. 47
12. CountDownLatch (class) java.util.concurrent................................................................................. 47
12.1. Ejemplo 1. Señal de salida: arranque sincronizado................................................................. 47
12.2. Ejemplo 2. Señal de fin: sincronización de llegada.................................................................. 48
13. CyclicBarrier (class) java.util.concurrent.......................................................................................... 49
13.1. Ejemplo....................................................................................................................................................... 49
14. Exchanger (class) java.util.concurrent............................................................................................... 50
14.1. Ejemplo....................................................................................................................................................... 50
15. Executor (interface) java.util.concurrent.......................................................................................... 51
16. Executors (factory) java.util.concurrent............................................................................................ 51
17. ExecutorService (interface) java.util.concurrent........................................................................... 52
18. Future<V> (interface)................................................................................................................................ 52
19. Lock (interface)
java.util.concurrent.locks....................................................................................... 53
20. PipedInputStream (class) java.io.......................................................................................................... 53
21. PipedOutputStream (class) java.io....................................................................................................... 54
22. PipedReader (class) java.io..................................................................................................................... 54
23. PipedWriter (class) java.io...................................................................................................................... 54
24. ReadWriteLock (interface) java.util.concurrent.locks................................................................ 55
25. Runnable (interface) java.lang............................................................................................................... 55
26. ScheduledExecutorService (interface)
java.util.concurrent..................................................... 55
27. ScheduledFuture<V> (interface)
java.util.concurrent................................................................. 55
28. Semaphore (class) java.util.concurrent............................................................................................. 56
29. Thread (clase) java.lang............................................................................................................................ 56
30. ThreadGroup (class) java.lang............................................................................................................... 57
31. Timer (class) java.util................................................................................................................................ 57
31.1. Ejemplo....................................................................................................................................................... 58
32. TimerTask (class) java.util...................................................................................................................... 59
Diccionario........................................................................................................................................................................... 60
1. Acrónimos............................................................................................................................................................ 60
2. Términos en inglés........................................................................................................................................... 60