0% encontró este documento útil (0 votos)
88 vistas11 páginas

Threads

Este documento presenta información sobre hilos en Java. Explica que un hilo es una unidad de ejecución dentro de un proceso y está asociado con una secuencia de instrucciones, un conjunto de registros y una pila. También describe dos métodos para crear hilos en Java: heredando de la clase Thread o implementando la interfaz Runnable. Los objetivos del documento son implementar programas que usen hilos para imprimir números pares e impares así como realizar cálculos sobre vectores usando hilos.
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
88 vistas11 páginas

Threads

Este documento presenta información sobre hilos en Java. Explica que un hilo es una unidad de ejecución dentro de un proceso y está asociado con una secuencia de instrucciones, un conjunto de registros y una pila. También describe dos métodos para crear hilos en Java: heredando de la clase Thread o implementando la interfaz Runnable. Los objetivos del documento son implementar programas que usen hilos para imprimir números pares e impares así como realizar cálculos sobre vectores usando hilos.
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 DOCX, PDF, TXT o lee en línea desde Scribd

TECNM

INSTITUTO TECNOLOGICO DE CERRO AZUL

ALUMNOS: CARRERA: INGENIERIA EN SISTEMAS


COMPUTACIONALES
CLEMENTE SOLIS ELIA JAZMIN
21500233
MATERIA: TOPICOS AVANZADOS
LARA FLORES JAVIER
21500275
DOCENTE: DRA. MARIA ALEJANDRA
HERNANDEZ CASANOVA SUSAN YANERY
ROSAS TORO
21500268

SEMESTRE: 4
INTRODUCCIÓN

¿ Que es un Hilo o Threads ?

Un hilo ( Thread , llamado también proceso ligero) es unidad de ejecución de un


proceso y esta asociado con una secuencia de instrucciones, un conjunto de
registro y una pila. Los threads o hilos de ejecución permiten organizar los
recursos del ordenador en forma que pueda haber varios programas actuales en
paralelo.

Un hilo (Thread , llamado también proceso ligero) es unidad de ejecución de un


proceso y esta asociado con una secuencia de instrucciones, un conjunto de
registro y una pila. La Máquina Virtual Java (JVM) es un sistema multihilo, es
decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM
gestiona todos los detalles, asignación de tiempos de ejecución, prioridades, etc.,
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. A este tipo de procesos donde se comparte los recursos se les llama
a veces procesos ligeros (lightweight process).

De hecho, todos los programas con interface gráfico (AWT o Swing) son multihilo
porque los eventos y las rutinas de dibujado de las ventanas corren en un hilo
distinto al principal. En java hay dos formas de crear un nuevo thread: • Derivado
de una clase Thread • Implementando la interface Runnable.

NOMENCLATURA:

Creación de un threads derivado de una clase Thread

[public ] class <nombre_clase> extends Thread {

// declaracion de atibutos
[public] <nombre_clase> ( [ lista_parametro]){

super ([variable]);

// sentencia a ejecutar

public void run( ){

// sentencia a ejecutar

Creación de threads implementando la interface Runnable

[public ] class <nombre_clase> implements Runnable {

// declaracion de atibutos

[public] <nombre_clase> ( [ lista_parametro]){

// sentencia a ejecutar

public void run( ){

// sentencia a ejecutar

OBJETIVOS:

 Implemente un programa en java que use hilos independientes. Un hilo


imprime números pares del 1 al 10, y otro hilo imprime números impares del
1 al 10. Cree dos instancias (hilos) de cada uno y muestre la salida. Realice
el programa utilizando herencia o con la interfaz.
 Implemente un programa en java que utilice hilos. El tamaño del vector es
desde el main como parámetro. El llenado del vector es aleatorio. El hilo
muestra la suma de los elementos de un vector, la suma de los cuadrados
de los elementos del vector y la media. Cree dos instancias con diferente
tamaño de vector y presente los resultados.

TEORÍA

LA CLASE THREAD

La forma más directa para hacer un programa multihilo es extender la clase


Thread, y redefinir el método run(). Este método es invocado cuando se inicia el
hilo (mediante una llamada al método start() de la clase Thread). El hilo se inicia
con la llamada al método run() y termina cuando termina éste. El siguiente ejemplo
ilustra estas ideas.

Principales métodos de un hilo (thread)

start()

Este método indica a la JVM que cree un contexto del hilo del sistema y comience
a ejecutarlo. A continuación, el método run() de este hilo será invocado en el
nuevo contexto del hilo. Hay que tener precaución de no llamar al método start()
más de una vez sobre un hilo determinado.

run()

El método run() constituye el cuerpo de un hilo en ejecución. Este es el único


método del interfaz Runnable. Es llamado por el método start() después de que el
hilo apropiado del sistema se haya inicializado. Siempre que el método run()
devuelva el control, el hilo actual se detendrá.
sleep(long)

El método sleep() provoca que la JVM ponga al hilo en curso a dormir durante el
número de milisegundos indicados en el parámetro de invocación. Una vez
transcurridos esos milisegundos, dicho hilo volverá a estar disponible para su
ejecución. Los relojes asociados a la mayor parte de los intérpretes de Java no
serán capaces de obtener precisiones mayores de 10 milisegundos, por mucho
que se permita indicar hasta nanosegundos en la llamada alternativa a este
método.

stop()

Este método provoca que el hilo se detenga de manera inmediata. A menudo


constituye una manera brusca de detener un hilo, especialmente si este método se
ejecuta sobre el hilo en curso. En tal caso, la línea inmediatamente posterior a la
llamada al método stop() no llega a ejecutarse jamás, pues el contexto del hilo
muere antes de que stop() devuelva el control. Una forma más elegante de
detener un hilo es utilizar alguna variable que ocasione que el método run()
termine de manera ordenada.

yield( )

Este método permite que el objeto Thread en ejecución actualmente se detenga


temporalmente, lo que puede permitir que otros hilos se ejecuten.

suspend()

El método suspend() es distinto de stop(). suspend() toma el hilo y provoca que se


detenga su ejecución sin destruir el hilo de sistema subyacente, ni el estado del
hilo anteriormente en ejecución. Si la ejecución de un hilo se suspende, puede
llamarse a resume() sobre el mismo hilo para lograr que vuelva a ejecutarse de
nuevo.

resume()

El método resume() se utiliza para revivir un hilo suspendido. No hay garantías de


que el hilo comience a ejecutarse inmediatamente, ya que puede haber unhilo de
mayor prioridad en ejecución actualmente, pero resume() ocasiona que el hilo
vuelva a ser un candidato a ser ejecutado.

setPriority(int)

El método setPriority() asigna al hilo la prioridad indicada por el valor pasado como
parámetro. Hay bastantes constantes predefinidas para la prioridad, definidas en
la clase Thread, tales como MIN_PRIORITY, NORM_PRIORITY y
MAX_PRIORITY, que toman los valores 1, 5 y 10, respectivamente.

getPriority()

Este método devuelve la prioridad del hilo de ejecución en curso, que es un valor
comprendido entre uno y diez.

setName( String )

Este método permite identificar al hilo con un nombre nemónico. De esta manera
se facilita la depuración de programas multihilo. El nombre mnemónico aparecerá
en todas las líneas de trazado que se muestran cada vez que el intérprete Java
imprime excepciones no capturadas.

getName( )

Este método permite obtener el nombre del hilo. Por ejemplo: t1.getName( )
isAlive( ) Este método devuelve true si el hilo está vivo. Por ejemplo:

System.out.println( t1.isAlive( )); join() Este método espera hasta que muera este
hilo. Por ejemplo: t1.join( ); currentThread( ) Este método permite obtener una
referencia al objeto Thread actualmente en ejecución. Por ejemplo:
Thread.currentThread( ).

LA INTERFACE RUNNABLE

La interface Runnable proporciona un método alternativo a la utilización de la


clase Thread, para los casos en los que no es posible hacer que la clase definida
extienda la clase Thread. Esto ocurre cuando dicha clase, que se desea ejecutar
en un hilo independiente deba extender alguna otra clase. Dado que no existe
herencia múltiple, la citada clase no puede extender a la vez la clase Thread y otra
más. En este caso, la clase debe implantar la interface Runnable, variando
ligeramente la forma en que se crean e inician los nuevos hilos.

Cuando se instancia la clase Thread (o una subclase) se crea un nuevo Thread


que está en su estado inicial ('New Thread' en el gráfico). En este estado es
simplemente un objeto más. No existe todavía el thread en ejecución. El único
método que puede invocarse sobre él es el método start(). Cuando se invoca el
método start() sobre el hilo el sistema crea los recursos necesarios, lo planifica (le
asigna prioridad) y llama al método run(). En este momento el hilo está corriendo,
se encuentra en el estado ‘runable’. Si el método run() invoca internamente el
método sleep() o wait() o el hilo tiene que esperar por una operación de
entrada/salida, entonces el hilo pasa al estado 'no runnable' (no ejecutable) hasta
que la condición de espera finalice. Durante este tiempo el sistema puede ceder
control a otros hilos activos. Por último cuando el método run finaliza el hilo
termina y pasa a la situación 'Dead' (Muerto).

MATERIAL Y EQUIPO

-Laptop

- software de programación javaNetbeans

PROCEDIMIENTO:

se crea un nuevo proyecto en este caso se llamara “Hilos”, este proyecto contará
con tres java class, una clase main, una clase para imprimir los números impares
del 1 al 10 y otra clase para imprimir los numeros pares del 1 al 10.
En este caso para la creación de los threads se ha utilizado la clase thread.

Se declaran 3 variables de tipo entero una llamada n, otra llamada c que estará
inicializada en cero y una variable llamada contador que de igual manera estará
inicializada en cero.

En la clase Impares:

Con un ciclo for la variable n tendrá un valor inicial de 1 y mientras n sea menor o
igual a 10 se estará realizando el ciclo

La variable c es la que va a tomar el valor del numero impar que vaya calculando
con la ayuda del signo %(mod).

Dentro del mismo ciclo se creará un if cuya condición es que mientras el valor de c
sea diferente de cero la variable contador va a adquirir el valor de n. para asi
poder imprimir los números impares.
En la clase Pares:

Con un ciclo for la variable n tendrá un valor inicial de 1 y mientras n sea menor o
igual a 10 se estará realizando el ciclo

La variable c es la que va a tomar el valor del numero par que vaya calculando con
la ayuda del signo %(mod) en la cual el mod de 2 debe ser igual a cero.

Dentro del mismo ciclo se creará un if cuya condición es que mientras el valor de c
sea diferente de cero la variable contador va a adquirir el valor de n. para asi
poder imprimir los números pares.
En la clase main:

En esta clase se van a llamar a las clases de los hilos creados y se crearan
objetos para asi poder darles la indicación a los hilos que empiecen a trabajar
cuando empiece la ejecución del programa después de que el programa haya
imprimido los números pares el hilo correspondiente a estos será puesto a dormir
para que de esta manera al momento de imprimir los números impares estos no
aparezcan mezclados con los números pares y de esta manera darle estabilidad a
los hilos.
LOS RESULTADOS FUERON LOS SIGUIENTES:

CONCLUSIONES:

Es importante comprender la importancia y el funcionamiento de los threads, ya


que estos estarán presentes en diversos aspectos de los sistemas que utilizamos
día con día. El conocer su funcionamiento y creación ayudaran a que sean
implementados de la mejor manera para entregar un software de calidad.

BIBLIOGRAFIAS:

Sistemas Distribuidos::Hilos en Java EUI-SG/INFOR.UVA.ES.

https://www.infor.uva.es/~fdiaz/sd/doc/hilos

http://www.tesoem.edu.mx/alumnos/cuadernillos/2013.001.pdf

También podría gustarte