Cześć,
Muszę napisać program działający w dwóch wątkach. 1. Wątek ma w pętli dodawać cyfry do mojej listy i wypisywać co 10 pętli napis "Utworzono x obiektów".
2. Wątek ma natomiast czytać listę i sumować jej pozycje no i co 30 zsumowań wypisywać "Zsumowano x liczb"
Sam program w sobie to banał, tylko jak to zsynchronizować żeby otrzymać wynik podobny do tego:
Utworzono 10 obiektów
Utworzono 20 obiektów
Utworzono 30 obiektów
Zsumowano 30 liczb
Utworzono 40 obiektów
Utworzono 50 obiektów
Utworzono 60 obiektów
Zsumowano 60 liczb
Utworzono 70 obiektów
Mam na razie tyle:
public class Test {
public static void main(String[] args){
AddTowar a = new AddTowar();
CountTowar b = new CountTowar();
a.start();
b.start();
}
}
////////////////////////////////////////////////
import java.util.ArrayList;
public class AddTowar extends Thread{
private static ArrayList<Integer> lista = new ArrayList<>();
public void run(){
for(int i = 0; i<1000; i++){
lista.add(i);
if(i%10==0)
System.out.println("Utworzono " + i " obiektów");
}
public static ArrayList<Integer> getLista(){
return lista;
}
}
/////////////////////////////////////////////////////////////
public class CountTowar extends Thread{
private int counter =0;
private int suma = 0;
public void run(){
for(int item: AddTowar.getLista()){
counter++;
suma += item;
if(counter%30==0)
System.out.println("Policzono wagę " + counter + " produktów");
}
}
}
Niestety to w ogóle ze sobą nie współgra, ponieważ w sumowaniu na starcie pobiera chyba pustą listę w skutek czego program wypisuje jedynie "utworzono x obiekótw".
Pomocy :/