Kirjoittaja Aihe: Java ohjelmointia  (Luettu 2181 kertaa)

haamu

  • Käyttäjä
  • Viestejä: 36
    • Profiili
Java ohjelmointia
« : 20.11.10 - klo:11.35 »
Olen tehnyt Netbeansilla pienen java ohjelman. Lisäsin siihen toiminnon, joka kaynnistää toisen threadin. Pääohjelma odottelee käyttäjän toimia, mutta pitäisi saada virkoamaan myös toisen threadin signaalista. Mitenkähän tuo helpoiten saadaan aikaan ?
« Viimeksi muokattu: 20.11.10 - klo:21.29 kirjoittanut haamu »

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Java ohjelmointia
« Vastaus #1 : 20.11.10 - klo:13.22 »
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

haamu

  • Käyttäjä
  • Viestejä: 36
    • Profiili
Vs: Java ohjelmointia
« Vastaus #2 : 20.11.10 - klo:21.36 »
No niin, nythän tuo jopa näkyy. Ei tarvita enää selvännäkijää vastaamaan...
Kiitos vinkistä. Ihmettelinkin kun teksti muuttui spagetiksi kun kirjautui sisään.

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: Java ohjelmointia
« Vastaus #3 : 27.11.10 - klo:10.23 »
Tuo herättäminen tehdään niin että pää threadissa synchronized bloking sisällä kutsutaan
wait();

Sitten toisessa threadissa kun halutaan herättää wait() oleva thread kutsutaan
notify(odottava objekti);

http://pastebin.com/p4KDQfyz


haamu

  • Käyttäjä
  • Viestejä: 36
    • Profiili
Vs: Java ohjelmointia
« Vastaus #4 : 30.11.10 - klo:19.40 »
Ongelma on siinä, että pääohjelma ei odota loopissa, eikä wait() ole myöskään optio.
Pääohjelma odottaa jotain hiirenklikkausta tms. tapahtumaa. Jonkinlainen sendEvent tai sellainen olis siis hakusessa. Tällä hetkellä olen kallellaan tuollaiseen swingworker ratkaisuun,
jonka done() kutsu ainakin jollain tavalla ratkaisee ongelman.  Mutta mieluiten herättäisin tuon pääohjelman jollain ilveellä.