Witam. Sa to moje poczatki w Javie wiec prosze o wyrozumiałosc(program jest w wersji roboczej) .
Pisze takie "cudo" które ma miec 2 watki w jednym czytac plik (w pliku jest kilkadziesiat tysiecy wpisów typu id_produktu waga)
id nas nie interesuje ma sumowac wage. W pierwszym watku (ten mam zrobiony i działa)ma tworzyc obiekty klasy "Towar" i wyswietlac informacje o tym co 200 obiektów. Drugi watek ma sumowac obiekty stworzone przez pierwszy watek i podawac informacje o tym co 100 z sumowanych obiektów a na koncu ma podac laczna sume.
No i to jest wlasnie moj problem jak stworzyc ten drugi watek wydaje mi sie ze sie nie obedzie bez przerobki pierwszego watku aby
obiekty pakowac w jakas tablice badz kolekcje.
No i na koncu mam zrobic synchronizacje i koordynacje pracy obu watkow.
z gory dzieki za wszystkie podpowiedzi i jeszcze raz prosze o wyrozumiałosc
package czytanieW;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.StringTokenizer;
class Towar {
private static int ObjNumber = 0;
static int wagaT;
static String id;
public Towar(String id, int waga) {
ObjNumber++;
this.id = id;
this.wagaT = waga;
}
public static int getObjNumber() {
return ObjNumber;
}
public static String getid() {
return id;
}
public static int getwagaT() {
return wagaT;
}
}
class Suma implements Runnable {
public void run() {
int suma1 = 0;
suma1 = suma1 + Towar.getwagaT();
if ((Towar.getObjNumber()) % 100 == 0)
System.out.println("Policzono wage " + suma1);// Towar.getObjNumber()+" obiektów");
System.out.println("XXX" + Towar.getwagaT());
}
}
class CzytanieW implements Runnable {
public void run() {
FileInputStream in = null;
String waga = null;
String indeks = null;
String linia = null;
try {
FileReader fr = new FileReader("c:\\Temp\\Towary.txt");
BufferedReader br = new BufferedReader(fr);
while ((linia = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(linia, " ");
while (st.hasMoreTokens()) {
indeks = st.nextToken();
waga = st.nextToken();
}
Towar tow = new Towar(indeks, Integer.valueOf(waga));
if ((Towar.getObjNumber()) % 200 == 0)
System.out.println("Utworzono: " + Towar.getObjNumber()
+ " obiektów");
}
} catch (Exception ex) {
}
}
public static void main(String[] args) {
new Thread(new CzytanieW()).start();
new Thread(new Suma()).start();
}
}