[ googol @ 20.05.2008. 09:58 ] @
Evo ovako, imam situaciju da imam N threadova ciji je zadatak da prime objekat tipa "Kvadrat" i u jedan fajl , npr. c:\podaci.txt upisu njegove mjere. Ja sam uradio sljedece, kreirao sam klasu Kvadrat: Code: public class Kvadrat { int visina, sirina; public Kvadrat(int visina, int sirina) { this.visina = visina; this.sirina = sirina; } public int getVisina() { return visina; } public int getSirina() { return sirina; } } zatim klasu ObradaKvadrata koja implementira Runnable Code: public class ObradaKvadrata implements Runnable { Kvadrat kvadrat; public ObradaKvadrata(Kvadrat kvadrat) { this.kvadrat=kvadrat; } public void obradi() { new UpisPodatakaUFajl().upisiPodatke(kvadrat); } @Override public void run() { obradi(); } } i koja poziva metodu upisiPodatke a koja pripada klasi UpisPodatakaUFajl : Code: import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class UpisPodatakaUFajl { public synchronized void upisiPodatke(Kvadrat kvadrat) { boolean pf; File fajl =new File("c:\\podaci.txt"); pf = fajl.exists(); if (pf == false) { try { fajl.createNewFile(); BufferedWriter out = new BufferedWriter(new FileWriter(fajl, true)); out.write("Visina: " + Integer.toString(kvadrat.getVisina()) + " , Sirina: " + Integer.toString(kvadrat.getSirina()) + "\n"); out.close(); } catch (IOException e) { System.out.println("Greska pri kreiranju/upisu u fajl \"podaci\""); } } else if (pf == true) { try { BufferedWriter out = new BufferedWriter(new FileWriter(fajl, true)); out.write("Visina: " + Integer.toString(kvadrat.getVisina()) + " , Sirina: " + Integer.toString(kvadrat.getSirina()) + "\n"); out.close(); } catch (IOException e) { System.out.println("Greska pri upisu u fajl \"podaci\""); } } } } koja ima zadatak da upise podatke u fajl c:\podaci.txt , i da ga kreira prvo ako ne postoji... Sve se ovo pokrece sa kodom: Code: Public class Main { public static void main(String[] args) { int i; for(i=1;i<=10;i++) { Kvadrat k = new Kvadrat(i,i); new Thread(new ObradaKvadrata(k)).start(); } } } Problem je sto mi nikako ne moze normalno upisati svih 10 kvadrata. Stalno izbacuje exception ili ako ne izbaci gresku, onda upise samo nekoliko kvadrata i/ili "0" umjesto nekog od njih. Ima li ko ideju zasto je to tako? |