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