jQuery in Action, 3rd edition
The moose likes Threads and Synchronization and the fly likes doubt  on synchronized block in java Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of OCA Java SE 8 Programmer I Study Guide this week in the OCAJP 8 forum!
JavaRanch » Java Forums » Java » Threads and Synchronization
Bookmark "doubt  on synchronized block in java" Watch "doubt  on synchronized block in java" New topic

doubt on synchronized block in java

shankara me

Joined: Nov 30, 2012
Posts: 14
Hi ! .Today i am going to ask on synchronized block.

the general form of synchronized block is

1)Here object means object of any class.i.e we can lock object of any class besides the object of "table" class.
2)if we place this in place of object it is possible to lock object of table class
3)then how can we lock object of a class other than table?can you give example based on below programme?
4) if we want to access a variable or method from table class we need object of table .
if we lock object of table class it is not possible to an object of table class to access synchronized block of table class
from two different places simultaneously.
but if we lock object of another class,say X,how can the object of class X can access synchronized block of table class?
because object of class X is not object of table.object of table only can access members of table.

I think you got my doubt.
I request you to clarify my doubt based on below programme.



Anayonkar Shivalkar

Joined: Dec 08, 2010
Posts: 1544

Hi shankara,

Welcome to CodeRanch!

Please, UseCodeTags. I've added code tags for you this time. Also, please try to write more readable code(using proper indentation etc.).

Now, coming to your problem, technically, with synchronized block, we don't lock an object, but we acquire a lock on an object. What this means is - if a thread is having a lock on an object(that is - enters in synchronized block), then no other thread can acquire lock on the same object unless the first thread releases the lock(that is - exits from synchronized block).

As stated above, you can acquire lock on any object. E.g. in your code, you are sending object of table class to both threads and you are synchronizing the code on 'this' (that is, current object of table class). You can synchronize on any other object (e.g. a String, an Integer and so on).

Only important thing is - it should be same object to prevent multiple threads entering in same synchronized block.

I hope this helps.

Anayonkar Shivalkar (SCJP, SCWCD, OCMJD, OCEEJBD)
Veena Nair

Joined: Jul 08, 2012
Posts: 13
Hi shankara,

The following code may help you with your problem.

Don't get me started about those stupid light bulbs.
subject: doubt on synchronized block in java
It's not a secret anymore!