|
| 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
| |
|
|