This week's giveaway is in the EJB and other Java EE Technologies forum.
We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line!
See this thread for details.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Threads & Synchronization Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Threads & Synchronization" Watch "Threads & Synchronization" New topic
Author

Threads & Synchronization

v iyer
Greenhorn

Joined: Nov 15, 2000
Posts: 3
Which is true is a(), b() & c() can be called at any time
1> i.v is guaranteed always to be 0 or 1
2> j.v is guaranteed always to be 0 or 1
3> k.v is guaranteed always to be 0 or 1
4> j.v will always be >= k.v at any given time
5> k.v will always be >= j.v at any given time
I felt a,b,& c are all true as all methods are synchronized
and hence when the thread is in a() only i is inc & dec
so j & k remain unchanged
similarly b() & c().
But the answer given is only a & b.
Can someone please explain how this works?

class Counter{
int v = 0;
synchronized void inc() {v++;}
synchronized void dec() {v--;}
}
public class test extends Thread{
Counter i;
Counter j;
Counter k;
public synchronized void a(){
i.inc();
System.out.println("a");
i.dec();
}

public synchronized void b(){
i.inc(); j.inc(); k.inc();
System.out.println("b");
i.dec(); j.dec(); k.dec();
}
public synchronized void c(){
k.inc();
System.out.println("c");
k.dec();
}
}
Thanks
V Iyer
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Threads & Synchronization
 
Similar Threads
synchronized methods + Threads
One more on threads
Thread Question
Mughal rasmussen question
Synchronization Methods