Question
public class SyncTest
{
public static void main (String [] args)
{
Thread t = new Thread()
{
Foo f = new Foo();
public void run()
{
f.increase(20);
}
};
t.start();
}
}
class Foo
{
private int data = 23;
public void increase(int amt)
{
int x = data;
data = x + amt;
}
}
What will be the output of the program?
public class SyncTest
{
public static void main (String [] args)
{
Thread t = new Thread()
{
Foo f = new Foo();
public void run()
{
f.increase(20);
}
};
t.start();
}
}
class Foo
{
private int data = 23;
public void increase(int amt)
{
int x = data;
data = x + amt;
}
}
Answer: Option D
Was this answer helpful ?
Option D is correct because synchronizing the code that actually does the increase will protect
the code from being accessed by more than one thread at a time.
Option A is incorrect because synchronizing the run() method would stop other threads from
running the run() method (a bad idea) but still would not prevent other threads with other runnables
from accessing the increase() method.
Option B is incorrect for virtually the same reason as Aâ€â€synchronizing the code that calls the
increase() method does not prevent other code from calling the increase() method.
Was this answer helpful ?
More Questions on This Topic :
Question 9.
Which will contain the body of the thread?
....
Submit Solution