• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Synchronized method behavior

 
Yuan Ye
Ranch Hand
Posts: 172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
HI, I got question about the synchronized method.
class A {
synchronized void m1() {
}
synchronized void m2() {
}
}
supposing two threads t1 and t2 have the same instance of A (a). t1 is calling a.m1() and t2 is calling a.m2().
My question is what would the behavior of t2 like when it calls m2 method and can't get the lock. Would t2 be suspended, or would t2 try to call m2 again later? Notice there's nothing of wait() or notify() in the synchronized method.
Thanks.
 
Ernest Friedman-Hill
author and iconoclast
Marshal
Pie
Posts: 24211
35
Chrome Eclipse IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
t2 would just pause until the lock became available. "suspended" has a specific technical meaning in Java, so you can't really say it's suspended, but yes, that's what it is.
 
Yuan Ye
Ranch Hand
Posts: 172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for replying.
So does that mean the JVM will take care of the business, it will check the available of the lock for t2 and I don't need write anything like wait() or notify() in this case, is that right?
 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Right.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic