Gå til innhold

Spørsmål angående tråder i java


Anbefalte innlegg

Hey,

 

Ønsker en liten forklaring angående tråder i java.

Jeg driver og leser et flysalg eksempel i java (side 37 - 40) :

http://heim.ifi.uio.no/inf1010/v10/lysark/Trader-2010-1.pdf

 

Hvis jeg har forstått det riktig så er det slik at når en selger tråd går til wait så slipper den andre tråden til og utfører alt den skal utføre før den foregående slipper til igjen.

 

I dette eksempelet så er det Stein som først ønsker å selge 2 seter og går til sleep. Imens Michael slipper til og får solgt sine ønskede 4 seter, før det samme repeteres på nytt..

 

Ser vi videre i foilene så ser vi at en synchronized metode er inført, hvor igjen først Stein går til vent og Micael får solgt sitt.

 

1. Hvorfor skal får tråden tl michael få kjøre før Stein sin ?

Lenke til kommentar
Videoannonse
Annonse

Jeg antar at du vil ha en boolean som settes true eller false når Michael sin tråd har kjørt ferdig, så Stein sin kan kjøre?

 

Da jeg ikke har lest eksempelet du linker til, så beklager jeg om jeg er helt på jordet :) men det er slik jeg forstår det ut i fra din forklaring.

Lenke til kommentar

Hvis jeg har forstått det riktig så er det slik at når en selger tråd går til wait så slipper den andre tråden til og utfører alt den skal utføre før den foregående slipper til igjen.

 

På hvilket tidspunkt en tråd avbrytes og andre tråder/prosesser slippes til styres av operativsystemet. Du har som programmerer ingen, eller i beste fall veldig liten, kontroll på hvordan trådene i programmet ditt skeduleres. Du må derfor anta at tråder kan byttes inn/ut når som helst.

 

Ved et kall på sleep(), så vil den aktuelle tråden (med all sansynlighet) bli byttet ut, men dette kan også skje på helt andre tider. Når du leser et program som i eksempelet der, så må du lese det som om de to trådene kan gjøre alt "på likt". I praksis så vil den tråden som sover kortest få utført sin "if ( fly.prøvSalg(ønske))" først og dermed klare å selge.

 

1. Hvorfor skal får tråden tl michael få kjøre før Stein sin ?

 

Svaret her blir da, "når Michael sover kortere enn Stein".

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...