[voikko] Malaga-Javan uusi versio julkaistu
Harri Pitkänen
hatapitk at iki.fi
Mon Feb 16 18:08:33 EET 2009
On Monday 16 February 2009, Hannu Väisänen wrote:
> Malaga-luokka ei toimi, jos Java-ohjelmassa on useampi kuin yksi säie
> ja jos kaksi säiettä käyttää Malaga-luokkaa yhtaikaa. Ulkomaan
> kielellä sanottuna Malaga-luokka ei ole thread-safe.
>
> Tein Malaga-Java -pakettiin uuden luokan, StaticMalaga, jonka pitäisi
> olla synkronoitu niin, että Malaga analysoi sanan ja palauttaa
> tulokset muuttujassa tyyppiä Collection muitten säikeitten pääsemättä
> sotkemaan asiaa. Esimerkki luokan käytöstä on tiedostossa
> examples/StaticExample.java.
Enpä minäkään tuota ehtinyt vielä testaamaan, mutta koodia katsoessani
huomasin metodissa StaticMalaga.init(String projectFile) pari ongelmaa. Siinä
asetetaan ihan alkupuolella
initialized = true;
vaikka tuossa vaiheessa ei vielä tiedetä, onnistuuko alustaminen. Jos jotain
menee pieleen (esim. projektitiedostoa ei ole olemassa), ei uutta yritystä
voi enää tehdä, koska tuo alustusmetodi luulee alustuksen onnistuneen ja
palaa tekemättä mitään.
Sitten kohdassa
malaga = new Malaga (projectFile);
if (malaga == null) {
LOG.severe ("StaticMalaga: Variable malaga is null. This should never
happen. Exiting.");
System.exit (1);
}
tuo if-lauseen ehto ei tosiaankaan koskaan voi olla Java-kielessä tuossa
tilanteessa tosi, joten tarkistus on tarpeeton. Lopuksi logituksessa
LOG.severe ("StaticMalaga: Can not initialize Malaga.\n" + t.getMessage()
+ "\nExiting.");
sanotaan "Exiting", muttei tuossa kuitenkaan kutsuta System.exit-funktiota.
Ehkä lisäksi kannattaisi tarkistaa, että jos alustusmetodia kutsutaan toisen
kerran kun malaga on jo alustettu, oliko pyydetty projektitiedosto sama kuin
se, millä alustus alun perin tehtiin. Jos tiedosto ei ole sama, kannattaa
heittää poikkeus, jotta kutsuva puoli saa tietää, ettei se saanutkaan
haluamaansa tiedostoa käyttöön, vaan siellä on auki joku muu projekti.
Säieturvallisuuden puolesta tuo koodi näyttäisi ihan toimivalta. Toivottavasti
jossain vaiheessa ehtisin tekemään tälle asialle Voikon puolellakin jotain.
Libvoikon käytön hankaluus monisäikeisissä ohjelmissa on tällä hetkellä ehkä
suurin Voikon käyttöä rajoittava ongelma.
Harri
More information about the voikko
mailing list