aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes What Happens If a thread Can't Get the Lock? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "What Happens If a thread Can Watch "What Happens If a thread Can New topic
Author

What Happens If a thread Can't Get the Lock?

aslika bahini
Ranch Hand

Joined: Mar 03, 2007
Posts: 111


Hi there!

Threads calling non-static synchronized methods in the same class will only block each other if they're invoked using the same instance. That's because they each lock on 'this' instance, and if they're called using two different instances, they get two locks, which do not interfere with each other.









Is 1 & 2 are two different instances or same instances?

Thanks!
regards
samura

Noam Wolf
Greenhorn

Joined: Jul 29, 2007
Posts: 12
Hi,

I'm not 100% sure i understand your question. When you use the "new" keyword you are instantiating a new instance of an object. So //1 & //2 are different instances.

With regards to the lock on dostuff... first of all your class doesn't compile (pubic == public) second you must implement the run() method (not the Run() method) and third you are not try to access do stuff in this program. To do so you need to do one of 2 things:

1. Call the run() method from the class, this will cause it to be a regular method call and no new threads will spawn.
2. You can wrap your class with a Thread object and call the start() method on that object (see Sun guide), this will span 2 separate threads that will call dostuff synchronously (because you used the synchronized key word on the method) so there won't be a deadlock or a race condition....

hope that helps...
Murali Kakarla
Ranch Hand

Joined: Jul 11, 2007
Posts: 80
Wow Noam, your answer is impeccable

Murali...
aslika bahini
Ranch Hand

Joined: Mar 03, 2007
Posts: 111
Thanks! & sorry for the confusions....
Here are my understanding..



Manfred Klug
Ranch Hand

Joined: Jun 04, 2007
Posts: 377
Yes. Thread 1 and 2 will synchronize. whereas thread 3 is independent.
Burkhard Hassel
Ranch Hand

Joined: Aug 25, 2006
Posts: 1274
Howdy ranchers!

Perhaps write some code in the run method that needs some time when you test synchronization. And also (just an idea) add a yield() to give other threads a chance. That might look silly, as the synchronized keyword simply would not allow the yielding. But it is then more interesting to compare the behavior of the code with / without the synchronized. Again: Just an idea.


And:
Noam wrote:
With regards to the lock on dostuff... first of all your class doesn't compile (pubic == public)


Welcome to the Ranch, Noam!


Yes, all interface methods have to be public. But for that pubic things, the private keyword would be more appropriate...
(Sorry couldn't resist )

samura babu:
Here are my understanding..

I think, you got it!



Yours,
Bu.


all events occur in real time
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: What Happens If a thread Can't Get the Lock?