Lunes 23 de Diciembre de 2024, 12:32
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
Hilos
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Hilos (Leído 2460 veces)
Ric_Monje
Miembro activo
Mensajes: 32
Hilos
«
en:
Viernes 9 de Mayo de 2008, 05:42 »
0
Pues me intereza mucho el tema de Hilos y pues me seria de gran ayuda que uds me pudieran colaborar con ejemplos de codigo fuente relacionado con el tema..Gracias
Tweet
manix
Miembro MUY activo
Mensajes: 203
Nacionalidad:
Re: Hilos
«
Respuesta #1 en:
Viernes 9 de Mayo de 2008, 05:53 »
0
Para conseguir que Java haga varias cosas a la vez o que el programa no se quede parado mientras realiza una tarea compleja, tenemos los hilos (Threads).
Bueno... Te voy a colaborar con un ejemplo clasico del uso de hilos. Adentro viene una explicacion hacerca de el uso de los hilos
PD; el ide que use fue netbeans
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Ric_Monje
Miembro activo
Mensajes: 32
Re: Hilos
«
Respuesta #2 en:
Viernes 9 de Mayo de 2008, 07:05 »
0
Gracias amigo, ahora mismo lo miro, y lo estudio con detenimiento; y en base a este, voya trabajar unos basicos y aqui estare montando el fruto de mi estudio
manix
Miembro MUY activo
Mensajes: 203
Nacionalidad:
Re: Hilos
«
Respuesta #3 en:
Viernes 9 de Mayo de 2008, 07:13 »
0
exc, si tienes una duda con respecto al codigo ya sabes que hacer.. es que casi no esta documentado
Ric_Monje
Miembro activo
Mensajes: 32
Re: Hilos
«
Respuesta #4 en:
Domingo 11 de Mayo de 2008, 22:45 »
0
Bueno, pocoa poco voya prendiendo mas de estetema, gracias a internet y a la informacion y codigo que me dono
manix
.
Poco a poco voy haciendo programitas relacionados con
Hilos
y pues a medida que aprendo los voya ir montando.
Código: Text
public class MiHilo extends Thread{
public void run (){
for (int i=0; i< 10; i++){
System.out.println(i);
}
}
public static void main (String arg[]){
MiHilo a = new MiHilo ();
MiHilo b = new MiHilo ();
a.start();
b.start();
}
}
Ric_Monje
Miembro activo
Mensajes: 32
Re: Hilos
«
Respuesta #5 en:
Domingo 11 de Mayo de 2008, 22:51 »
0
Bueno aqui va mi segundo programa trabajando con
Hilos
, son algo basicos, pero poco apoco espero ir aprendiendo.
CLASE Data
Código: Text
public class Data {
private int x;
public Data() {
this.x = x;
}
public int getx() {
return x;
}
public void setx(int x) {
this.x = x;
}
}
CLASE MiHil
Código: Text
public class MiHil extends Thread{
private Data d;
public MiHil(Data m){
d=m;
}
public void run(){
synchronized(d){
int z;
z=d.getx();
z=z+1;
d.setx(z);
}
System.out.println(d.getx());
}
public static void main(String agr[]){
Data p=new Data();
p.setx(1);
MiHil a = new MiHil (p);
MiHil b = new MiHil (p);
a.start();
b.start();
}
}
Con timepo, montare los que valla haciendo
frealgagu
Miembro activo
Mensajes: 49
Re: Hilos
«
Respuesta #6 en:
Miércoles 14 de Mayo de 2008, 23:13 »
0
Bien, esta fue una clase de Hilos que dicté en las asesorías que presto en la Universidad, lo diseñé de tal forma que se mostrara gráficamente (en un applet), aquí les explico el Ejemplo:
Código: Text
import java.applet.*;
import java.awt.*;
public class Hilos extends Applet
{
Hilo hilo1;
Hilo hilo2;
Hilo hilo3;
Hilo hilo4;
Hilo hilo5;
Hilo hilo6;
public void init()
{
hilo1=new Hilo();
hilo2=new Hilo();
hilo3=new Hilo();
hilo4=new Hilo();
hilo5=new Hilo();
hilo6=new Hilo();
hilo1.start();
hilo2.start();
hilo3.start();
hilo4.start();
hilo5.start();
hilo6.start();
new Repintar(this).start();
}
public void update(Graphics c)
{
//Doble Buffer
Image dibujo=createImage(800,600);
Graphics g=dibujo.getGraphics();
g.setColor(Color.blue);
g.fillRect(hilo1.getX(),hilo1.getY(),50,50);
g.setColor(Color.red);
g.fillRect(hilo2.getX(),hilo2.getY(),50,50);
g.setColor(Color.green);
g.fillRect(hilo3.getX(),hilo3.getY(),50,50);
g.setColor(Color.gray);
g.fillRect(hilo4.getX(),hilo4.getY(),50,50);
g.setColor(Color.cyan);
g.fillRect(hilo5.getX(),hilo5.getY(),50,50);
g.setColor(Color.magenta);
g.fillRect(hilo6.getX(),hilo6.getY(),50,50);
//Doble Buffer
c.drawImage(dibujo,0,0,null);
}
}
class Hilo extends Thread
{
int x,y;
Hilo()
{
x=320;
y=240;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void run()
{
while(true)
{
int direccion=(int)(Math.random()*4);
if(direccion==0)
x+=10;
else if(direccion==1)
x-=10;
else if(direccion==2)
y-=10;
else
y+=10;
try
{
sleep(100);
}catch(Exception e)
{
System.out.println(""+e);
}
}
}
}
class Repintar extends Thread
{
Hilos principal;
Repintar(Hilos principal)
{
this.principal=principal;
}
public void run()
{
while(true)
principal.repaint();
}
}
En realidad este programa nos muestra en un applet seis diferentes cuadrados de distinto color, que se van moviendo constantemente por la pantalla de manera aleatoria, par aconseguir esto, utilizo la clase Hilo que hereda de Thread e implemento el método run(), el cual contiene un ciclo infinito que me ira cambiando las coordenadas x e y de los diferentes cuadrados.
Dicionalmente utilizo una clase Repintar que hereda también de Thread, por medio del cual puedo repintar constantemente todos los cuadrados.
Espero sea de ayuda. Este ejemplo lo coloqué más para demostrar de una manera menos tediosa el funcionamiento de los hilos.
Ric_Monje
Miembro activo
Mensajes: 32
Re: Hilos
«
Respuesta #7 en:
Jueves 15 de Mayo de 2008, 02:28 »
0
frealgagu
gracias por el ejemplo, de verdad me a sevido de mucha ayuda para mi apredisaje, ahora trabaje en una ventana que muestra 4 imagenes que van cambiando cada x timepo, y si se da clcik sobre la imagen para de cambiar...veanlo y opinen
Código: Text
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
import javax.swing.*;
public class Ventana extends JFrame implements Runnable {
private boolean g= false;
private JLabel j= new JLabel();
private Vector <ImageIcon> imagenes= new Vector<ImageIcon>();
private int i=0;
public Ventana(){
this.setTitle("Buuuuuuu");
this.setBounds(200, 150, 200, 200);
j.setBounds(200, 150, 200, 200);
this.add(j);
j.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
int x=e.getX();
int y=e.getY();
if(x<=350){
g=true;
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
});
}
public static void main(String arg[]){
Ventana a= new Ventana ();
a.setVisible(true);
Thread t = new Thread( a );
t.start();
}
public void run(){
ImageIcon e= new ImageIcon();
ImageIcon d= new ImageIcon ("java_starting.jpg");
ImageIcon b= new ImageIcon ("t_java_logo.jpg");
ImageIcon c= new ImageIcon ("ComfyChairRadSmall-full.jpg");
ImageIcon a= new ImageIcon ("javatrap.jpg");
imagenes.add(a);
imagenes.add(b);
imagenes.add(c);
imagenes.add(d);
for(int f=0; f<=100 && g==false;f++){
if(i==4){
i=0;
}
try {
Thread.sleep(600);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
j.setIcon(imagenes.get(i));
i+=1;
}
}
}
En el metodo run, solo es que cambien las imagenes jpg por una que uds quieran
frealgagu
Miembro activo
Mensajes: 49
Re: Hilos
«
Respuesta #8 en:
Viernes 16 de Mayo de 2008, 10:38 »
0
Buen apunte, en realidad el trabajo con hilos facilita mucho la vida, cuando se quieren hacer tareas independientes al hilo de ejecución normal del programa, por ejemplo en la reproducción de sonidos internamente trabaja los hilos para que se reproduzca el sonido sin que se pause el funcionamiento normal del programa. Tambien puede funcionar cuando se utiliza algún procedimiento que utilice mucho tiempo.
Ric_Monje
Miembro activo
Mensajes: 32
Re: Hilos
«
Respuesta #9 en:
Martes 20 de Mayo de 2008, 05:46 »
0
Poco a poco se va rpendiendo
Código: Text
// Varios subprocesos imprimiendo en distintos intervalos.
public class ProbadorSubprocesos {
public static void main( String [] args )
{
// crear y nombrar a cada subproceso
ImprimirSubproceso subproceso1 = new ImprimirSubproceso( "subproceso1" );
ImprimirSubproceso subproceso2 = new ImprimirSubproceso( "subproceso2" );
ImprimirSubproceso subproceso3 = new ImprimirSubproceso( "subproceso3" );
System.err.println( "Iniciando subprocesos" );
subproceso1.start(); // iniciar subproceso1 y colocarlo en estado listo
subproceso2.start(); // iniciar subproceso2 y colocarlo en estado listo
subproceso3.start(); // iniciar subproceso3 y colocarlo en estado listo
System.err.println( "Subprocesos iniciados, termina main\n" );
} // fin de main
} // fin de la clase ProbadorSubprocesos
// la clase ImprimirSubproceso controla la ejecución de los subprocesos
class ImprimirSubproceso extends Thread {
private int tiempoInactividad;
// asignar nombre a subproceso, llamando al constructor de la superclase
public ImprimirSubproceso( String nombre )
{
super( nombre );
// elegir tiempo de inactividad aleatorio entre 0 y 5 segundos
tiempoInactividad = ( int ) ( Math.random() * 5001 );
}
// el método run es el código a ejecutar por el nuevo subproceso
public void run()
{
// colocar subproceso en inactividad durante el tiempo indicado por tiempoInactividad
try {
System.err.println(
getName() + " va a estar inactivo durante " + tiempoInactividad );
Thread.sleep( tiempoInactividad );
}
// si el subproceso se interrumpió durante su inactividad, imprimir rastreo de la pila
catch ( InterruptedException excepcion ) {
excepcion.printStackTrace();
}
// imprimir nombre del subproceso
System.err.println( getName() + " termino su inactividad" );
} // fin del método run
} // fin de la clase ImprimirSubproceso
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
Hilos