/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
tråd som skal vente
Fra : Mikkel F. S. Anderse~


Dato : 11-06-02 16:35

Hej alle. Jeg sidder og er stødt på et problem, jeg ikke kan håndtere:

Jeg opretter en semafor (virker ok) en tråd og starter tråden i "sim"
klassen:
Semaphore s=new Semaphore(0);
Thread t_bruger = new bruger(s,0,minCal);
t_bruger.start();
s.Signal();
Det er bare helt ok.

Men når jeg vil sætte tråden til at vente, så går der noget galt. Min

vente-kode-blok er:
try{wait(5000);} catch(InterruptedException e){}

Denne linje kode bliver kørt fra klassen "bruger", i run() metoden.

Når jeg prøvet at køre mit lille program, så får jeg følgende fejl:

java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at bruger.beregnRandom(sem.java:59)
at bruger.run(sem.java:47)

Og den forstår jeg ikke! damn.

Jeg skal bare have tråden til at vente lidt, så det er nemmere at se
hvad der sker.

Har noget en ide til hvad jeg kan gøre for at få tråden til at vente?


--
Venlig hilsen
Mikkel F. S. Andersen
taageluskeren.dk


 
 
Kristian Erbou [7100~ (11-06-2002)
Kommentar
Fra : Kristian Erbou [7100~


Dato : 11-06-02 17:00

Brug sleep() i stedet for wait()

/ Kristian


"Mikkel F. S. Andersen" <NON@NON.DK> wrote in message
news:3D06188D.5040205@NON.DK...
> Hej alle. Jeg sidder og er stødt på et problem, jeg ikke kan håndtere:
>
> Jeg opretter en semafor (virker ok) en tråd og starter tråden i "sim"
> klassen:
> Semaphore s=new Semaphore(0);
> Thread t_bruger = new bruger(s,0,minCal);
> t_bruger.start();
> s.Signal();
> Det er bare helt ok.
>
> Men når jeg vil sætte tråden til at vente, så går der noget galt. Min
>
> vente-kode-blok er:
> try{wait(5000);} catch(InterruptedException e){}
>
> Denne linje kode bliver kørt fra klassen "bruger", i run() metoden.
>
> Når jeg prøvet at køre mit lille program, så får jeg følgende fejl:
>
> java.lang.IllegalMonitorStateException
> at java.lang.Object.wait(Native Method)
> at bruger.beregnRandom(sem.java:59)
> at bruger.run(sem.java:47)
>
> Og den forstår jeg ikke! damn.
>
> Jeg skal bare have tråden til at vente lidt, så det er nemmere at se
> hvad der sker.
>
> Har noget en ide til hvad jeg kan gøre for at få tråden til at vente?
>
>
> --
> Venlig hilsen
> Mikkel F. S. Andersen
> taageluskeren.dk
>



Mikkel F. S. Anderse~ (11-06-2002)
Kommentar
Fra : Mikkel F. S. Anderse~


Dato : 11-06-02 17:04

Kristian Erbou [7100] wrote:
> Brug sleep() i stedet for wait()
>
> / Kristian


Ja.... Det lyder jo egenteligt meget logisk Jeg er vidst kommer til
at bytte om på de to begreber.. Det må være tid til en pause.

--
Venlig hilsen
Mikkel F. S. Andersen
taageluskeren.dk


Frederik Hansen (11-06-2002)
Kommentar
Fra : Frederik Hansen


Dato : 11-06-02 17:31

Men grunden/løsningen til din exception er at wait skal kaldes i en
syncronized-block.

Mikkel F. S. Andersen wrote:

> Kristian Erbou [7100] wrote:
>
>> Brug sleep() i stedet for wait()
>>
>> / Kristian
>
>
>
> Ja.... Det lyder jo egenteligt meget logisk Jeg er vidst kommer til
> at bytte om på de to begreber.. Det må være tid til en pause.
>


--
Venlig hilsen

Frederik Hansen

Sun Certified Programmer
for the Java(tm) 2 Platform

email : frederik@roirex.dk
www : www.roirex.dk


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste