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