Bienvenido
Bienvenido

 

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

 

principio