Ohjelmointitekniikka (Java) -kurssin tentin (28.2.2006) neljännen tehtävän arvosteluperusteet
Laatija: Jukka Stenlund
Alla oleva arvostelumenettelyn kuvaus ei ole täysin tarkka kuvaus prosessista, mutta siitä saanee silti melko hyvän kuvan siitä, mitä arvostelussa painotettiin. Tämän sivun asialuetteloita käytettiin pisteytystä helpottavana tarkistuslistana vastauksia läpi käytäessä, mutta pisteytykseen vaikuttivat muutkin asiat kuin tässä luetellut.
Oleellisimmat asiat
Oleellisimpia asioita olivat alla luetellut. Täysiä pisteitä ei ollut mahdollista saada, ellei tekstissä mainittu jollain tavalla jokainen näistä oleellisimmista asioista. Jos vastaus vaikutti enimmäkseen hyvältä, toimi pisteytys siihen tapaan, että yhden oleellisen asian mainitsematta jättäminen vähensi aina yhden pisteen maksimista. Käytännössä tällaista lähestymistapaa sovellettiin lähinnä silloin, kun oleellisista asioista oltiin jätetty mainitsematta korkeintaan kaksi. Tällaisella vastauksella sai siis kuusi pistettä.
Event dispatch thread
- hoitaa tapahtumiin reagoinnin, kutsuu tapahtumankäsittelijäalgoritmeja
Worker thread
- työsäikeillä estetään käyttöliittymää jäätymästä
Single-Thread Rule
Tämän säännön idea on siinä, kuinka käytetään enimmältään säieturvatonta Swingiä rikkomatta sitä.
- itse luoduista säikeistä (työsäikeistä) ei saa suoraan kutsua Swing-komponenttien metodeita
- tämä johtuu siitä, että Swing ei ole säieturvallinen
- selitys EventQueue-luokan invokeLater/invokeAndWait -metodien käytöstä (metodien avulla työsäie eli worker thread voi antaa operaatioita event dispatch -säikeen suoritettavaksi)
Muita hyviä huomioita
Vastaukset, joita ei ollut luontevaa lähestyä pistemaksimista käsin, keräsivät pisteitä myös alla lueteltujen asioiden käsittelemisestä.
Säikeistä GUI-ohjelmassa
- säikeiden elinajat graafisen ohjelman elinkaaren aikana (main-säikeen kuolema, event dispatch -säikeen syntymä)
Worker thread
- esimerkkejä hitaista operaatioista, joita ei pidä suorittaa event dispatch -säikeessä
- suora viittaus säikeen blocked-tilaan menemiseen
maininta valmiista abstrakteista toteutuksista (esim. SwingWorker)
Single-Thread Rule
- erittelevä viittaus siihen, että sekä tiedon kerääminen käyttöliittymästä että käyttöliittymän päivittäminen on syytä tehdä event dispatch -säikeestä käsin
- Swingissä on muutamia säieturvallisia metodeita
- Käyttöliittymää voi rakentaa main-säikeessä siihen asti, kunnes se realisoidaan kutsumalla setVisible(true) tai pack()-metodia