Java - SUMA DE 3 HILOS EN JAVA

 
Vista:

SUMA DE 3 HILOS EN JAVA

Publicado por Paloita (1 intervención) el 27/10/2018 21:18:28
espero me puedan ayudar,tengo este problema de hilos...

Crear un programa que evalúe p=Σdesde i=-100 hasta 100 de(seno(i))+Σdesde i=-100 hasta 100 de(coseno(i))+Σdesde i=-100 hasta 100 de(tangente(i)). Para cada término de la ecuación emplee un hilo y al final realice la suma.

Llevo esto, esto es de la suma 1 del seno...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Suma1 extends Thread{
    public Suma1(String msg){
        super(msg);
    }
 
    @Override
    public void run(){
        int i;
        double s=0;
        for(i=-100;i<=100;i++){
            s+=(s+Math.sin(i));
        }
        System.out.println("Hilo 1");
        System.out.println(s);
    }
}

Para la suma 2 del coseno es este...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Suma2 extends Thread{
    public Suma2(String msg){
        super(msg);
    }
 
    @Override
    public void run(){
        int i;
        double s=0;
        for(i=-100;i<=100;i++){
            s+=(s+Math.cos(i));
        }
        System.out.println("Hilo 2");
        System.out.println(s);
    }
}

y para la suma 3 de la tangente, es este...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Suma3 extends Thread{
    public Suma3(String msg){
        super(msg);
    }
 
    @Override
    public void run(){
        int i;
        double s=0;
        for(i=-100;i<=100;i++){
            s+=(s+Math.tan(i));
        }
        System.out.println("Hilo 3");
        System.out.println(s);
    }
}

Este es mi main...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class HiloNum7 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Thread hilo1=new Suma1("Proceso numero 1");
        Thread hilo2=new Suma2("Proceso numero 2");
        Thread hilo3=new Suma3("Proceso numero 3");
        Thread hilo4=new SumaTotal("Proceso numero 4");
 
        hilo1.start();
        hilo2.start();
        hilo3.start();
        hilo4.start();
    }
 
}

Lo que no puedo hacer es la suma general, espero me puedan ayudar, mi idea era crear otro hilo para sumar los 3 hilos, pero no tengo ni la más mínima idea de cómo hacerlo :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

SUMA DE 3 HILOS EN JAVA

Publicado por Tom (1573 intervenciones) el 28/10/2018 10:08:50
Por supuesto, para un problema tan simple es matar moscas a cañonazos, pero ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Tasks {
	/* */
	static Callable<Double> createTask(int from, int to, DoubleUnaryOperator op) {
		return () -> {
			return IntStream.range(from, to).mapToDouble(d -> d).map(op).sum();
		};
	}
	/* */
	public static void main(String[] args) throws InterruptedException, ExecutionException {
		double total = 0.0;
		DoubleUnaryOperator opSin = (double v) -> {
			return Math.sin(v);
		};
		DoubleUnaryOperator opCos = (double v) -> {
			return Math.cos(v);
		};
		List<Callable<Double>> tasks = new ArrayList<>();
		tasks.add(createTask(-100, 100, opSin));
		tasks.add(createTask(-100, 100, opCos));
 
		ExecutorService executor = Executors.newFixedThreadPool(2);
		List<Future<Double>> partial = executor.invokeAll(tasks);
 
		for(Future<Double> f : partial) {
			total = total + f.get();
		}
		System.out.println(total);
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar