0% encontró este documento útil (0 votos)
26 vistas14 páginas

Program Ac I On Concurrent e

Cargado por

huarayoyucra
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas14 páginas

Program Ac I On Concurrent e

Cargado por

huarayoyucra
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

PROGRAMACIÓN

CONCURRENTE
PROGRAMACION AVANZADA
PROGRAMACION CONCURRENTE
• Programación concurrente trata de las técnicas de
programación que se usan para expresar el paralelismo
entre tareas y para resolver los problemas de
comunicación y sincronización entre procesos.
• El principal problema de la programación concurrente
corresponde a no saber en que orden se ejecutan los
programas (en especial los programas que se
comunican). Se debe tener especial cuidado en que este
orden no afecte el resultado de los programas.
PROGRAMACION CONCURRENTE
• La computación concurrente es una forma de
computación en la cual varios cálculos se ejecutan
simultáneamente en lugar de secuencialmente.
• El lenguaje Java está diseñado para admitir la
programación concurrente mediante el uso de
subprocesos.
• Los objetos y recursos pueden ser accedidos por
múltiples hilos; cada subproceso puede potencialmente
acceder a cualquier objeto en el programa y el
programador debe garantizar que los accesos de lectura
y escritura a los objetos estén correctamente
sincronizados entre los subprocesos.
PROGRAMACION CONCURRENTE
• Programa: Conjunto de sentencias/instrucciones que se
ejecutan secuencialmente. Se asemeja al concepto de
clase dentro de la POO. Es por tanto un concepto
estático.
• Proceso: Básicamente, se puede definir como un
programa en ejecución. Líneas de código en ejecución
de manera dinámica. Se asemeja al concepto de objeto
en POO.
PROGRAMACION CONCURRENTE
• Java posibilita la programación concurrente a través de
threads.
• Los threads son procesos ligeros, con línea de flujo de
control propia pero que comparte el espacio de
direcciones del programa.
• Los threads hacen posible la ejecución concurrente de
código.
• Los cambios de contexto son menos costosos en tiempo
de ejecución.
int lista[500];

Int lista[] = new int[x];


PROGRAMACION CONCURRENTE
• La Máquina Virtual Java (JVM) es un sistema multihilo,
es capaz de ejecutar varios hilos de ejecución
simultáneamente.
• JVM gestiona todos los detalles, asignación de tiempos
de ejecución, o prioridades, de forma similar a como
gestiona un Sistema Operativo múltiples procesos.
• La diferencia básica entre un proceso de Sistema
Operativo y un Thread Java es que los hilos corren
dentro de la JVM, que es un proceso del Sistema
Operativo y por tanto comparten todos los recursos,
incluida la memoria y las variables y objetos allí
definidos.
PROGRAMACION CONCURRENTE
• Thread (hilo, tarea) es la clase base de Java para definir
hilos de ejecución concurrentes dentro de un mismo
programa.
• Son los objetos en Java los que actúan
concurrentemente con otros.
• Las clases de objetos (hilos) que puedan actuar
concurrentemente deben heredar de la clase Threal.
class miClaseConcurrente extends Thread {}
PROGRAMACION CONCURRENTE
• Las clases derivadas de Thread deben incluir el método:
public void run(), este método especifica la tarea a
realizar.
• La ejecución del método run de Thread puede realizarse
concurrentemente con otros métodos run de otros
Thread y con el método main.

Objeto A Objeto B
main()
run() run()
PROGRAMACION CONCURRENTE
• El inicio de la ejecución de una tarea se realiza mediante
el método start ().
• start() es un método especial que invoca a run() y
devuelve inmediatamente el control a la tarea que ha
realizado la llamada.
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
• El inicio de la ejecución de una tarea se realiza mediante
el método start ().
• start() es un método especial que invoca a run() y
devuelve inmediatamente el control a la tarea que ha
realizado la llamada.
PROGRAMACION CONCURRENTE
• Un objeto concurrente pertenece a una clase que hereda
Thread.
• Hay que redefinir el método run() que especifica la tarea
concurrente.
• La ejecución de la tarea concurrente se realiza mediante
el método start(), que hereda de la clase Thread.
PROGRAMACION CONCURRENTE
La clase Thread
• Es la clase encapsula todo el control necesario sobre los
hilos de ejecución (threads).
• Objeto Thread se considera como el panel de control de
un hilo de ejecución (thread).
• La clase Thread es la única forma de controlar el
comportamiento de los hilos y para ello se sirve de los
métodos.
PROGRAMACION CONCURRENTE
Métodos de Clase
• Estos son los métodos estáticos que deben llamarse de manera
directa en la clase Thread.
currentThread()
• Este método devuelve el objeto thread que representa al hilo de
ejecución que se está ejecutando actualmente.
yield()
• Este método hace que el intérprete cambie de contexto entre el
hilo actual y el siguiente hilo ejecutable disponible. Es una
manera de asegurar que los hilos de menor prioridad no sufran
inanición.
sleep( long )
• El método sleep() provoca que el intérprete ponga al hilo en curso
a dormir durante el número de milisegundos que se indiquen en
el parámetro de invocación. Una vez transcurridos esos
milisegundos, dicho hilo volverá a estar disponible para su
ejecución.

También podría gustarte