問題詳情

229.Given: 1. public class TestFive{ 2. private int x; 3. public void foo(){ 4. int current = x; 5. x = current + 1; 6. } 7. public void go(){ 8. for(int i=0; i<5; i++){ 9. new Thread(){ 10. public void run(){ 11. foo(); 12. System.out.print(x + ", "); 13. }}.start(); 14. }} Which two changes, taken together, would guarantee the output: 1, 2, 3, 4, 5, ? (Choose two.)
(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 2 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 loopcode here}

參考答案