Sie sind auf Seite 1von 5

Hilos

monotarea :es que solo puede realizar una tarea simultaneamente,es decir,un flujo de ejecucion
cada vez y hasta que no se termine esa tarea no puede comenzar otro flujo de ejecucion .

como crear hilos de ejecucion:


1.Crear una clase que implemente la interfaz Runnable (metodo run())

2.Escribir el codigo de la tarea dentro del metodo run

3. Instanciar la clase creada y almacenar la instancia en variable de tipo Runnable

4.Crear instancia de la clase Thread pasando como parametro al constructor de thread el objeto
Runnable anterior

5.Poner en marcha el hilo de ejecucion con el metodo start() de la clase Thread

Parar un Thread
Metodos de interrupcion
void interrupt(): Solicita la interrupcion de un hilo en ejecucion

boolean isinterrupted(): Nos devuelven true o false dependiendo de si un hilo se encuentra


interrumpido true o sino se encuentra interrumpido false

static boolean interrupted(): Este es un metodo de clase

stop(): Detiene la ejecucion de un hilo(Este metodo no se debe utilizar esta OBSOLETO)

Metodo sleep(): Este metodo hace que durante la ejecucion de los hilos se haga una
pequeña pausa medida en milisegundos.Este metodo lanza una excepcion.

Que es lo que pasa cuando usamos el metodo sleep a un hilo en ejecucion

cuando lo usamos ese hilo en ejecucion queda bloqueado mientras esta sleep() osea mientras se
encuentra en pausa

y que quiere decir que este hilo se encuentre bloqueado?

quiere decir que no se puede hacer nada en ese hilo ni siquiera solicitar su interrupcion

y que pasa si a pesar de que no se puede solicitar su interrupcion la solicitas usando el metodo
interrupt()
pues en ese instante se produce una excepcion en ese instante el metodo sleep lanza una
excepcion de tipo InterruptedException

Parar varios Thread


Para detener 3 hilos se debe crear cada hilo representado por su variable respectiva

ejm:

Antes teniamos:

Thread t= new Thread(r);

t.start();

Ahora lo que hacemos:

Thread t1= new Thread(r);

t1.start();

Thread t2= new Thread(r);

t2.start();

Thread t3= new Thread(r);

t3.start();

Estados de los hilos.Sincronizacion de los


hilos
Conseguir que cuando varios hilos se esten ejecutando a la vez estos se sincronizen de alguna
forma.

Estado de los hilos:

1.Estado de nuevo: el hilo lo adquiere cuando instanciamos o creamos el hilo con el operador
new cuando todavia no hemos llamado al metodo start el hilo tiene el estado de nuevo.

2.estado ejecutable: este estado lo adquiere cuando ya hemos llamado al metodo start y
comienza la tarea . el estado se llama ejecutable pero no en ejecucion.

Un hilo que esta en ejecucion puede verse bloqueado por haber llamado al metodo sleep().
El hilo puede volver a ejecutarse despues de terminar el metodo sleep()

3.Estado muerto:Es cuando concluye el metodo run , es decir cuando la ejecucion del hilo acaba
a este se le considera muerto.pero tambien pude tener el estado de muerto cuando ocurre una
excepcion y esta no se captura.incluso tambien cuando se usa el metodo stop() el hilo muere.

Formas de crear un hilo:


Implementando la interfaz runnable-> es decir una clase que implemente el runnable

Forma sencilla de crear un hilo:


creando una clase que herede de Thread (extends Thread) lo cual nos permite utilizar ya todos
los metodos que vienen en la clase Thread

El metodo join: Espera a que un hilo muera o tenga el estado de muerto.

package sincronizando_hilos;

import java.util.logging.Level;

import java.util.logging.Logger;

public class Sincronizando_hilos {

public static void main(String[] args) {

try {

Hilosvarios hilo1= new Hilosvarios();

Hilosvarios hilo2= new Hilosvarios();

hilo1.start();

//el join hace que un hilo teermine por completo para que se ejecute el sgte

hilo1.join();//gracias al join se sincronizan las tareas


hilo2.start();

hilo2.join();

System.out.println("Terminadas las tareas");

} catch (InterruptedException ex) {

Logger.getLogger(Sincronizando_hilos.class.getName()).log(Level.SEVERE, null, ex);

//esta clase hereda de thread

class Hilosvarios extends Thread{

//sobrreescribimos el metodo run que viene en la ckase thread

public void run(){

for (int i = 0; i < 15; i++) {

try {

System.out.println("Ejecutar hilo "+getName());

Thread.sleep(200);

} catch (InterruptedException ex) {

Logger.getLogger(Hilosvarios.class.getName()).log(Level.SEVERE, null, ex);

Hacer que un hilo se ejecute al cabo de otro


automaticamente

Das könnte Ihnen auch gefallen