Potrzebuje pomocy z synchronizacja. W zadaniu 1.Watek ma wkladac towary do listy a 2.Watek zliczac ich wage. No i tu zaczyna sie problem wszystko pieknie dziala tylko nie wiem jak wyjsc z drugiego watku.
towary.txt moze byc roznej wielkosci.

Moje kody:

public class Towar {
    private int id;
    private int waga;

    public Towar(int id, int waga){
        this.id=id;
        this.waga=waga;
    }

    public int getWaga(){
        return waga;
    }
}
import java.util.ArrayList;

public class KontenerTowary {
    private ArrayList<Towar> towary;

    public KontenerTowary(){
        towary = new ArrayList<>();
    }

    public synchronized void putTowar(int id, int waga){
        towary.add(new Towar(id,waga));
        notify();

    }

    public synchronized int getTowary(int i){
            try {
                wait();
            } catch (InterruptedException e) {}
            notify();
            return towary.get(i).getWaga();
    }

    public int getSize(){
            return towary.size();
    }
}
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Watek1 extends Thread {
    private StringTokenizer tokeny;
    private KontenerTowary towary;

    public Watek1(KontenerTowary towary){
        this.towary=towary;
        tokeny = giveToken();
    }

    public void run(){
        int i = 0;
        while(tokeny.hasMoreTokens()){
            try{
                sleep(1);
            }catch (InterruptedException e) {}
            int id = Integer.parseInt(tokeny.nextToken());
            int waga = Integer.parseInt(tokeny.nextToken());
            towary.putTowar(id, waga);
            i++;
            if(i%200==0){
                System.out.println("utworzono "+i+" objektow");
            }   
        }
        System.out.println("----> koniec dodawania do kontenera");
    }

    public  StringTokenizer giveToken(){
        String txt = "";
        File file = new File("C:\\Eclipse\\Workspace\\towary.txt");
        Scanner objekty;
        try {
            objekty = new Scanner(file);
        } catch (FileNotFoundException e) {
            System.out.println("Nie ma pliku");
            objekty = null;
            System.exit(0);
        }
        while(objekty.hasNextLine())
            txt += objekty.nextLine()+"\n";

        return new StringTokenizer(txt);
    }
}
public class Watek2 extends Thread {
    private KontenerTowary towary;
    private int sumaWaga = 0;

    public Watek2(KontenerTowary towary) {
        this.towary = towary;
    }

    public void run() {
        int i = 0;
        int s = 1;
        while (i==towary.getSize()) {
        sumaWaga += towary.getTowary(i);
            if (s%100==0)
                System.out.println("Policzono wage "+s+" towarów");
            i++;
            s++;
        }
        System.out.println(sumaWaga);

    }

}

i klasa testujaca

public class Main {
    public static void main(String[] args) throws InterruptedException {
        KontenerTowary kt= new KontenerTowary();
        Thread watek1 = new Watek1(kt);
        Thread watek2 = new Watek2(kt);
        watek1.start();
        watek2.start();
    }
}

Prosze o pomoc termin nieublagalnie zbliza sie ku koncowi a ja nie moge sobie poradzic z (chyba) ostatnia rzecza