Re: thread: catch the current thread in a share object
On 7/26/2014 12:20 PM, Bert_emme wrote:
I try to implement a share object between thread. In the share object there is a queue. I want that if a condition is realizated the thread that at the moment lock the object go in wait and I want to put it in the queue of the shared object. But I don't idea on how referencing to this thread.
Example
class ObjShare{
Queue q;
public synchronized mymethod(){
if(condition){
q.put(thecurrentthread)
wait();
}
See markspace's response. Also, this use of wait() is certainly
wrong, for at least two reasons:
1) It won't compile: wait() is an instance method of Object,
and you must apply it to some kind of Object reference.
Perhaps you meant this.wait().
2) wait() will re-aquire its Object's lock and return after
some other thread calls notify() or notifyAll() on that
Object, *or* at any random moment for no reason at all.
The fact that wait() returns says *nothing* about whether
the reasons for waiting no longer apply. That's why a
wait() call should (nearly always) be inside a synchronized
loop that re-tests the condition after awakening.
Again: See markspace's response, with particular attention to
the phrase "not good design." You are almost certainly doing
something you'll eventually regret.
--
esosman@comcast-dot-net.invalid