• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Thread - The # between static synchronized and non static synchronized

 
Ranch Hand
Posts: 237
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hi all,
what's the difference of these static synchronized and non static synchronized?
why the output is # ?
here is the code for the static synchronized

here is the code for the non static
 
Ranch Hand
Posts: 49
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think the difference is that, the first code defines a class lock. So, when you instantiate two objects of the same class, the second string must wait for the first to finish, since it is unable to access the class lock.
In the second example, you have object locks. Since you have two different objects, nothing prevents the two threads fom running concurrently.
Correct me if I'm wrong,
Alex
 
Reda Mokrane
Ranch Hand
Posts: 237
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
object locks and class locks...
thank you Alex.
 
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Alex is right
u cannot execute non-static synchronized methods simultaneouly for the same object
whereas for the static sync methods since they are assoiciated with the class they cannot be executed for the class simultaneoulsy
 
Reda Mokrane
Ranch Hand
Posts: 237
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

For a static method, a " lock " is obtained for the class before the execution of the method.
Correct me if I'm wrong.
 
Ranch Hand
Posts: 464
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Before entering the synch code, the thread should have the
object or class lock. Thats how semaphores work (monitors in java)
HTH
 
Ranch Hand
Posts: 51
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Alex,
Can two threads run concurrently?
and MrShahid khan,can you please explain more clearly...I am a bit confused here.
Thanks,
Rashmi

 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic