Foros del Web » Programación para mayores de 30 ;) » Java »

ayudaaa urgente

Estas en el tema de ayudaaa urgente en el foro de Java en Foros del Web. holas: les escribo porque tengo una gran duda, soy nueva en java y tengo q trabajar con hebras en java, y no se como hacerlo.. ...
  #1 (permalink)  
Antiguo 08/07/2005, 19:41
 
Fecha de Ingreso: junio-2004
Mensajes: 26
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta ayudaaa urgente

holas:

les escribo porque tengo una gran duda, soy nueva en java y tengo q trabajar con hebras en java, y no se como hacerlo.. se que puede sonar mal pero me gustaria saber si alguien tiene un ejemplo de una mulitplicacion de un matriz con hebras para poder aprender de esto, ya que necesito trabajar con hebras...
desde ya muchas gracias

Chao
Soledad
__________________
SoLcItA
  #2 (permalink)  
Antiguo 08/07/2005, 20:07
Avatar de Modern_Crusades  
Fecha de Ingreso: junio-2005
Mensajes: 620
Antigüedad: 18 años, 10 meses
Puntos: 1
para trabajar con hilos en java tienes dos opciones la mas sencilla es hacer que tu clase extienda de Thread y hacer un metodo run el cual va a llevar el codigo que deseas,tambien es necesario los metodos, wait y notify, pero te sere sincero se me hace raro que te pidan multiplicar matrices con hilos, especificamente que fue lo que te pidieron, puede que tenga un ejemplo o algo util entre tanto codigo y tarugadas que me pidieron en la escuela.
este es un programa muy sencillo que husa hilo espero te de una idea:
/*Asumimos que tenemos tres procesos: Pa, Pb, Pc. Sólo el proceso Pa
puede escribir la letra A, Pb la letra B y Pc la letra C. Utilizando
solamente semáforos (y no otras variables) los procesos deben
sincronizarse, satisfaciendo las siguientes condiciones:
a) A y B pueden escribirse antes de que se escriba C.
b) B y C pueden alternarse en una cadena de salida, esto quiere
decir, que después de que salga la primera B no puede salir cualquier
B hasta que haya salido una C. Similarmente después de la salida de
una C no puede salir otra C hasta que haya salido una B.
c) El número total de B y C que puede aparecer en una salida no
puede exceder al número total de A.*/

import java.io.*;
import java.lang.*;
import java.math.*;

class imprimeABC{
public static void main(String args[]){
pantalla p=new pantalla();
Pa ProcA=new Pa(p);
Pb ProcB=new Pb(p);
Pc ProcC=new Pc(p);
ProcA.start();
ProcB.start();
ProcC.start();
}
}
class pantalla{
int B=1; int C=2; int sem=B;

public synchronized void imprime_A(){
System.out.print(" A ");
}
public synchronized void imprime_B(){
while(sem!=B){
try{wait();}
catch(InterruptedException e) {
System.out.println("Error: "+e.toString());
}
}
System.out.print(" B ");
sem=C;
notify();
}
public synchronized void imprime_C(){
while(sem!=C){
try{wait();}
catch(InterruptedException e) {
System.out.println("Error: "+e.toString());
}
}
System.out.print(" C ");
sem=B;
notify();
}
}
class Pa extends Thread{
pantalla pant;
Pa(pantalla p){ this.pant=p;}
public void run(){
for(int i=0; i<10; i++){
pant.imprime_A();
try{sleep((int)(Math.random()*3000));}
catch(InterruptedException e) {
System.out.println("Error: "+e.toString());
}
}
}
}
class Pb extends Thread{
pantalla pant;
Pb(pantalla p){this.pant=p;}
public void run(){
for(int i=0; i<5;i++){
pant.imprime_B();
try{sleep((int)(Math.random()*3000));}
catch(InterruptedException e) {
System.out.println("Error: "+e.toString());
}
}
}
}

class Pc extends Thread{
pantalla pant;
Pc(pantalla p){this.pant=p;}
public void run(){
for(int i=0; i<5; i++){
pant.imprime_C();
try{sleep((int)(Math.random()*3000));}
catch(InterruptedException e) {
System.out.println("Error: "+e.toString());
}
}
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:10.