Hirdetés

Keresés

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

  • thon73

    tag

    válasz Karma #1733 üzenetére

    Aha! Köszönöm. 1. pont alapján a kódot javítottam.

    2. Eddig multithreadet (a rendszer által kínált lehetőségeken kívül) csak időzítési feladatokra használtam. Viszont - a log szigorításával - szükségem lett volna egy "saját" log-ra, amit akkor is használhatok, ha tableten dolgozom. A program nagyon egyszerű, egy file-ba írja az üzeneteket. ((Az esetleges összeomlás miatt a metódus nyitja-írja-zárja a file-t (flush is lehetne helyette, de az idő nem volt lényeges szempont)). Ilyen üzenet bármelyik thread-ről érkezhet, ezért szeretnénk biztos lenni abban, hogy működik.

    Két megoldást találtam a figyelmeztetésed után:

    private final Object lock = new Object();

    private static String addTextToFileLog( File logFile, String text )
    {
    synchronized( lock )
    {
    OutputStreamWriter logStream = new OutputStreamWriter( new FileOutputStream(logFile, true));
    logStream.append( text );
    logStream.flush();
    logStream.close();
    }
    }

    illetve:

    private static synchronized String addTextToFileLog( File logFile, String text )
    {
    OutputStreamWriter logStream = new OutputStreamWriter( new FileOutputStream(logFile, true) );
    logStream.append( text );
    logStream.flush();
    logStream.close();
    }

    (A hibaellenőrzést az egyszerűség kedvéért töröltem.)
    Van előnye egyik vagy másik megközelítésnek? Egyáltalán jó ez így, vagy valamit elnéztem?
    Ha még abban tudnék egy kis segítséget kapni, hogy ezt hogyan tesztelhetem a szimpla próbálkozáson kívül, azt is megköszönném!

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