threds
Páginas: 19 (4696 palabras)
Publicado: 29 de abril de 2015
DISTRIBUIDA
III.1 Concurrencia con Java: Thread Java
J.M. Drake
L. Barros
Notas:
1
Concurrencia en Java.
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.
Notas:
Procodis’09: III.1- Thread Java
José M.Drake
Java es un lenguaje que permite formular programas concurrentes. Esto es, existen en Java
sentencias que permiten construir un programa con múltiples líneas de flujo de control ( threads) que
se ejecutan concurrentemente si la plataforma es multiprocesadora o que ejecutan deforma
entralazada sus sentencias dando apariencia de concurrencia si la plataforma es monoprocesadora.
La unidad básica de concurrencia en Java es el Thread, que representa un proceso ligero que
comparte el mismo espacio de variables con los restantes threads del mismo programa. Dado que los
Threads de un programa Java son todos ellos internos al programa, no se necesita la protección de
seguridadde disponer de un único espacio de variables propio de cada threads, y al tener un espacio
de memoria único se aligera y facilita los cambios de contexto entre threads.
Como se ha visto en los capítulos previos del curso la concurrencia proporciona muchas ventajas
de programación, tanto en la gestión de entradas y salidas, de dispositivos externos o de las
interacciones con el usuario, como parahacer que la estructura del programa sea mas próxima al
dominio del problema al facilitar la programación orientada a objetos y con objetos activos.
En contrapartida la programación concurrente requiere abordar nuevos situaciones sobre
sincronización entre threads y acceso de forma segura a los objetos compartidos, por lo que el
lenguaje Java debe proporcionar sentencias y recursos que permitanabordarlas.
2
2
Class Thread
Un thread se crea en Java instanciando un objeto de la clase
Thread.
El código que ejecuta un thread está definido por el método
run() que tiene todo objeto que sea instancia de la clases Thread.
La ejecución del thread se inicia cuando sobre el objeto Thread
se ejecuta el método start().
De forma natural, un thread termina cuando en run() se alcanza
una sentenciareturn o el final del método. (Existen otras formas
de terminación forzada)
Procodis’09: III.1- Thread Java
José M.Drake
3
Notas:
Para declarar un thread en un programa Java se debe instanciar un objeto que sea una extensión
(extends) la clase “java.lang.Thread”. Por cada objeto de con estas características que se declare en
un programa java, se crea un nuevo thread con una línea de flujo decontrol propia que se ejecutará
concurrentemente con el programa principal y con los restantes threads.
El código que ejecuta un thread es el expresado através de su método run(), que es heredado de la
clase Thread. A fin de definir la actividad que se quiere que ejecute el nuevo thread es necesario
sobreescribir el método run() original con un código que establezca la actividad deseada.
La ejecucióndel thread creado con la instanciación de un objeto derivado de Threads comienza
cuando se invoca en el programa principal (o en otro thread activo) el método start del objeto.
Existen muchas formas de concluir un threads. La natural es cuando en el método run() que define
su actividad, se alcanza alguna sentencia end. Más adelante se analizarán otros métodos heredados
de Thread que permitenabortar o elevar excepciones en el thread, y que pueden conducir a su
finalización.
3
Constructores de la clase Thread.
Thread()
Thread(Runnable threadOb)
Thread(Runnable threadOb, String threadName)
Thread(String threadName)
Thread(ThreadGroup groupOb, Runnable threadOb)
Thread(ThreadGroup groupOb, Runnable threadOb,
String threadName);
Thread(ThreadGroup groupOb, String threadName)...
Leer documento completo
Regístrate para leer el documento completo.