Witam
jestem studentem informatyki i ostatnio Na laboratoriach z Javy dostałem takie zadanie:
Stworzyć 2 wątki , 2 semafory, i klasę Main. 1 wątek ma pobierać 10 razy od użytkownika a i b a drugi wyświetlić sumę tego a i b.Napisałem taki program:
package wejsciowka;
import java.util.Scanner;
import java.util.concurrent.Semaphore;
public class Dane extends Thread {
private int a, b;
Semaphore sem_dane;
public Dane(Semaphore sem_dane) {
this.sem_dane = sem_dane;
}
Scanner o = new Scanner(System.in);
@Override
public void run() {
for (int i = 0; i < 10 ; i++) {
System.out.println(i+ "Podaj a: ");
a = o.nextInt();
System.out.println(i+ "Podaj b: ");
b = o.nextInt();
}
sem_dane.release();
}
public int getA() {
return a;
}
public int getB() {
return b;
}
}
package wejsciowka;
import java.util.concurrent.Semaphore;
public class Suma extends Thread {
Dane d;
Semaphore sem_dane, sem_suma;
private int suma = 0;
public Suma(Dane d, Semaphore sem_dane, Semaphore sem_suma) {
this.d = d;
this.sem_dane = sem_dane;
this.sem_suma = sem_suma;
}
@Override
public void run() {
try {
sem_dane.acquire();
for (int i = 0; i < 10 ; i++) {
suma = d.getA() + d.getB();
System.out.println("suma nr " +i+ " Wynosi: " +suma);
}
sem_suma.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package wejsciowka;
import java.util.concurrent.Semaphore;
public class Main {
static Semaphore dane = new Semaphore(0);
static Semaphore suma = new Semaphore(0);
public static void main(String[] args) {
Dane t1 = new Dane(dane);
Suma t2 = new Suma(t1,dane,suma);
t1.start();
t2.start();
}
}
Program działa nie dokonca dobrze bo pobiera 10 razy a i b ale wyświetla sumę tylko dla ostatnich wartości a i b
a chciałbym żeby wyświetlał sumę dla danego a i b. Czy ktoś może mi pomóc w dokończeniu tego zadania
pozdrawiam