Springen naar inhoud

Thread in java laten slapen tot er een nieuwe waarde v/e variabele is


  • Log in om te kunnen reageren

#1

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 07 augustus 2009 - 14:16

Graag had ik een stukje code, in java, gevonden op internet gedebugd. Meer bepaald zou ik graag een variabele volgen en dus printen tijdens de uitvoering van het program. Hiervoor heb ik het program in eclipse gebracht en van hier uit run ik het.

Nu heb ik in de classe waarin ik de variablen wil volgen Runnable geÔmplementeerd deze start een thread op moment de class initiator hier een object van maakt.
Deze thread moet nu mijn variabelen printen echter het continue printen geeft niks, of iets wat niet te volgen is daarom dacht ik eraan dat ik op ťťn of ander manier de thread zou moet kunnen laten slapen zolang de variabele niet veranderd is en enkel dan laten printen op moment er een nieuwe waarden is.

Hoe doe ik dat? Groeten.

Veranderd door ypsilon, 09 augustus 2009 - 03:35


Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 07 augustus 2009 - 16:23

Dit klinkt alsof je een Event-systeem wilt hebben?
De variabele inpakken in een grotere klasse, met daarin het systeem dat je wilt zou de truc moeten doen. Of als de variabele al een PropertyChangeListener heeft, gewoon die gebruiken.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#3

Nvt

    Nvt


  • >25 berichten
  • 99 berichten
  • Ervaren gebruiker

Geplaatst op 07 augustus 2009 - 20:12

Voor threading:
http://java.sun.com/...ency/index.html

Zie eventueel: Pausing Execution with Sleep

;)

#4

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 07 augustus 2009 - 20:33

Bedankt.

Dit klinkt alsof je een Event-systeem wilt hebben?


Wat bedoel je daar mee? Groeten.

#5

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 07 augustus 2009 - 20:57

Wat bedoel je daar mee? Groeten.

Dat iedere keer als er een waarde gecreŽerd wordt, je wil dat er een event gegenereerd wordt. In dat event, kun je dan bijvoorbeeld de variabele afdrukken.
Maar hoeveel weet je al van Java?
Anders moet je in plaats van Thread, misschien gewoon een SwingWorker maken? Deze zijn veel handiger dan Threads...
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#6

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 07 augustus 2009 - 23:30

Hoe wordt de variabele veranderd?

Als het gebeurt in een methode (bv setVar(int newValue) of zoiets)
kan je misschien gebruik maken van 'wait()' en 'notify()'

Je maakt ergens een dummy object aan: 'dummy'.
In je printende Thread doe je :
while (true)
{
println(var);
dummy.wait(); //de thread wordt nu gepauzeerd tot iemand dummy.notify() oproept.
}

In de setVar() methode zet je na alles wat er in die methode staat:
dummy.notify();


Als de variabele gewoon overgeschreven wordt zonder gebruik te maken van een methode, dan werkt bovenstaand proces natuurlijk niet.
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#7

meijuh

    meijuh


  • >100 berichten
  • 202 berichten
  • Ervaren gebruiker

Geplaatst op 08 augustus 2009 - 12:10

Heb je hier wel eens naar gekeken?:
http://java.sun.com/...Observable.html
en
http://java.sun.com/...l/Observer.html

Uitleg:
http://en.wikipedia....bserver_pattern

Succes:)





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures