aspose file tools
The moose likes Threads and Synchronization and the fly likes Synchronization Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


Win a copy of The Mikado Method this week in the Agile and other Processes forum!
JavaRanch » Java Forums » Java » Threads and Synchronization
Reply Bookmark "Synchronization" Watch "Synchronization" New topic
Author

Synchronization

Padma Priya
Ranch Hand

Joined: Feb 01, 2007
Posts: 112
hi Everyone

I am new to threads and having a problem understanding the concept of Synchronization.

I am providing the code below:

Given:

public class Letters extends Thread {
private String name;
public Letters(String name) {
this.name = name;
}

public void write () {
System.out.print(name);
System.out.print(name);
}
public static void main(String[] args) {
new Letters("X").start();
new Letters("Y").start();
}
}

We want to guarantee that the output can be either XXYY or YYXX, but never XYXY or any other combination. Which of the following method definitions could be added to the Letters class to make this guarantee? (Choose all that apply.)

A)public void run() { write(); }

B)public synchronized void run() { write(); }

C)public static synchronized void run() { write(); }

D)public void run() { synchronized(this) { write(); } }

E)public void run() { synchronized(Letters.class) { write(); } }

F)public void run () { synchronized (System.out) { write (); } }

G)public void run() { synchronized(System.out.class) { write(); } }


The correct answers for this question are E and F.
But i was wondering why option B also cannot be the right answer for this question.

Can anybody explain...

Thanks in advance

With regards
Deepthi
Peter Chase
Ranch Hand

Joined: Oct 30, 2001
Posts: 1970
Because (B) synchronises on the instance of Thread. The two threads have different instances of Thread, so the synchronisation does not prevent them running simultaneously.


Betty Rubble? Well, I would go with Betty... but I'd be thinking of Wilma.<br /> <br />#:^P
Nitesh Kant
Bartender

Joined: Feb 25, 2007
Posts: 1638

Option B is not correct because that will hold an instance level lock and since both the threads are different instances, none of them will wait for the other.


apigee, a better way to API!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Synchronization
 
Similar Threads
Question on thread q.2 pg 734
Threads Lock aquisition
K&C book Threads doubt in Exercise question#2
Synchronized block K&B problem
Synchronization - K&B question