Hirdetés

Új hozzászólás Aktív témák

  • thon73

    tag

    Tapasztalt guruktól szeretnék segítséget kérni!
    Korábban azt mondtátok, (és ezzel a doksi is, meg még én is egyetértünk), hogy egy KÖZÖS file írása több file-ból és több thread-ból veszélyes, mert a kiírt tartalom összekeveredik.

    Tesztelés szempontjából megpróbáltam ezt elérni, (mármint, hogy a program rossz legyen, és keveredjenek az adatok), és LEHETETLEN! Minden ellenőrzést kivettem, és már nem is Channel-en keresztül próbálkozom (ami elvileg thread safe). Két, teljesen más package nevű program van, mindkettő több szálat futtat. Az adatok mindkét program minden száljáról megérkeznek.

    //Nyitás közös
    OutputStreamWriter stream = null;
    File file = new File( Environment.getExternalStorageDirectory(), "ThreadCheck.log");
    stream = new OutputStreamWriter( new FileOutputStream(file, true) );

    //Több ilyen thread van:
    new Thread(new Runnable() {
    public void run() {
    try {
    for (int n = 1; n < 8000; n++) {
    stream.append( "Egyes" );
    }
    }
    catch (Exception e) {
    Log.e("THREAD", e.toString());
    }
    }
    } ).start();

    A kész file az "Egyes", "Kettes" stb. szavakat egyben, épen tartalmazza.

    Én értettem félre valamit, vagy ez egy Android tulajdonság, amiben meg lehet bízni? :F
    Vagy hogyan tudom a programot "elrontani", és honnan tudhatom meg az ellenkezőjét: hogy minden körülmény között jól fog működni?

    Előre is köszönöm!

    (((Egy "log" szerű programrészre lenne szükségem: több file, esetleg több thread is ír ugyanabba a file-ba üzeneteket. Az üzenetek sorrendje stb. nem lényeges, csak az, hogy egy üzenet egyben maradjon. Ez ugye megvalósul, csak abban nem vagyok biztos, hogy ez így biztonságosan jó-e.)))

Új hozzászólás Aktív témák