public class TestFive {
private int x;
public void foo() {
int current = x;
x = current + 1;
}
public void go() {
for(int i=0;i<5;i++) {
new Thread() {
public void run() {
foo();
System.out.print(x + “, “);
} }.start();
}}}
Which two changes, taken together, would guarantee the output: 1, 2, 3, 4, 5, ?()
A. Move the line 12 print statement into the foo() method.
B. Change line 7 to public synchronized void go() {.
C. Change the variable declaration on line 3 to private volatile int x;.
D. Wrap the code inside the foo() method with a synchronized( this ) block.
E. Wrap the for loop code inside the go() method with a synchronized block synchronized(this) { // for loop code here }.