INGENIERIA DE SISTEMAS

Anuncio
INGENIERIA DE SISTEMAS
PROGRAMACION II (GRUPO 1)
THREADS (Multihilos)
Los threads (hilos) permiten realizar procesos paralelos en un programa en java.
El código que realiza el verdadero trabajo de un hilo se coloca un su método run(), El método run puede supeditarse
en una subclase de Thread o bien en un objeto Runnable (ejecutable): Runnable es una interface importante de java.
Un programa inicia la ejecución de un hilo invocando al método start() de ese hilo; a su vez el método start() invoca al
método run().
El método estático sleep (dormir) se invoca con un argumento que especifica durante cuanto tiempo el hilo que se está
ejecutando debe dormir (en segundos).
Ejemplo 1. (número que se incrementa automáticamente)
import java.awt.*;
import java.applet.*;
public class EjemploHilos extends Applet implements Runnable{
Thread hilo=new Thread(this); //declaración del hilo
int n=0; //el número que ira aumentando
public void init()
{
this.setSize(300,300);
hilo.start(); //inicia la ejecución del hilo
}
public void paint(Graphics g)
{
g.drawString(n+"", 20, 20);
}
public void run()
{
while(1==1) //bucle infinito
{
n++;
repaint();
try
{
hilo.sleep(500); //tiempo que dormira el hilo
}
catch(InterruptedException e)
{
System.out.print("error");
}
}
}
}
Ejemplo 2 (circulo en movimiento)
import java.awt.*;
import java.applet.*;
public class EjemploHilos extends Applet implements Runnable{
Thread hilo=new Thread(this); //declaración del hilo
int x=30,y=30; //posiciones del circulo;
public void init()
{
this.setSize(300,300);
hilo.start(); //inicia la ejecución del hilo
}
public void paint(Graphics g)
{
g.fillOval(x,y,20,20);
}
public void run()
{
while(1==1) //bucle infinito
{
x=x+5;
y=y+5;
repaint();
try
{
hilo.sleep(500); //tiempo que dormira el hilo
}
catch(InterruptedException e)
{
System.out.print("error");
}
}
}
}
Ejemplo 2 (El ejemplo anterior con control de teclas)
import java.awt.*;
import java.applet.*;
public class EjemploHilos extends Applet implements Runnable{
Thread hilo=new Thread(this); //declaración del hilo
int x=30,y=30; //posiciones del circulo;
int direccion=1; //1 abajo 2 arriba 3 izquierda 4 derecha
public void init()
{
this.setSize(300,300);
hilo.start(); //inicia la ejecución del hilo
}
public void paint(Graphics g)
{
g.fillOval(x,y,20,20);
}
public void run()
{
while(1==1) //bucle infinito
{
if(direccion==1)
y=y+5;
if(direccion==2)
y=y-5;
if(direccion==3)
x=x-5;
if(direccion==4)
x=x+5;
repaint();
try
{
hilo.sleep(50); //tiempo que dormira el hilo
}
catch(InterruptedException e)
{
System.out.print("error");
}
}
}
public boolean keyDown(Event e,int key)
{
if(key==1005)
direccion=1;
if(key==1004)
direccion=2;
if(key==1006)
direccion=3;
if(key==1007)
direccion=4;
return true;
}
}
EJEMPLO 3 (Cargar Imagen)
import java.awt.*;
import java.applet.*;
import javax.swing.*;
public class prueba extends Applet{
Image im1=new ImageIcon(getClass().getResource("figura.gif")).getImage();
public void init()
{
this.setSize(500,500);
this.setBackground(Color.BLUE); //cambia el color del fondo
this.setVisible(true);
}
public void paint(Graphics g)
{
g.drawImage(im1,30,30,this);
}
}
Descargar