Most likely, you are getting the notify during the sleep().  Then
you go into the wait() and are hung.  What exactly are you trying
to do?  wait()/notify() can be very powerfull (we use it for all
of our thread scheduling), but it is very tricky to get it just right.

Doug Twilleager
Java 3D Team
Sun Microsystems

>Subject: Re: [JAVA3D] Missed behavior posts
>To: [EMAIL PROTECTED]
>MIME-version: 1.0
>X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
>Content-transfer-encoding: 7bit
>X-Priority: 3
>X-MSMail-priority: Normal
>Delivered-to: [EMAIL PROTECTED]
>
>From: "Brad Urani" <[EMAIL PROTECTED]>
>Sent: Thursday, May 23, 2002 7:36 PM
>
>
>> I have a program that calls Behavior.postId() in a
>> thread with waits like so.
>>
>> for(c=0; c<100; c++)
>> {
>>  behavior.postId(1);
>>  Thread.sleep(20);
>>  wait();
>> }
>>
>> The behavior class calls notify() when it finishes so
>> the loop can continue, But I've noticed that if I set
>> the sleep too low the 3D thread will miss the behavior
>> post and get stuck at the wait() freezing my program.
>> Does anyone know how to guard against missed posts
>> like this?
>
>I've been holding off a bit on this, hoping for an answer from someone who
>knew something about threads.  I haven't figured my way around Java threads,
>but I have learned to avoid tricky wait/notify structures like the plague,
>and, most especially, I wouldn't let them near J3D.
>
>I can't read your exact problem here, but I can say that you're working in a
>frequency range that is very close to the one used by the J3D Behavior
>scheduler to poll its wakeup queue so I think you can expect trouble (the
>way this works is undocumented so I'm just guessing based on testing and
>observation, and in fact, I'm pretty sure it changed from 1.2 to 1.3)
>
>Further, I'm pretty sure that when a Behavior wakes up, it flushes its
>queue, so you're responsible for dissecting the wakeup condition and feeding
>its components to the proper response methods.  At least this is the only
>way I've gotten my Behaviors to work reliably.  YMMV.  So if your postId was
>stacked up behind another wakeup and you didn't handle the sequence
>properly, you may miss it, and your program would hang in the wait().
>
>If you're trying to do something about timing Behaviors or sequencing
>sampling, then I think you'd be much better off moving everything onto a
>Behavior.
>
>Not much, but I hope this helps.
>
>Fred Klingener
>Brock Engineering
>
>===========================================================================
>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>of the message "signoff JAVA3D-INTEREST".  For general help, send email to
>[EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to