SCJP題庫第223題

 
Given:
11. class PingPong2{
12.   synchronized void hit(long n){
13.     for(int i=1; i<3; i++)
14.     System.out.print(n + "-" + i + " ");
15.   }
16. }
17. public dass Tester implements Runnable{
18.   static PingPong2 pp2 = new PingPong2();
19.   public static void main(String[] args){
20.     new Thread(new Tester()).start();
21.     new Thread(new Tester()).start();
22.   }
23.   public void run(){pp2.hit(Thread.currentThread.getId());}
24. }
Which statement is true?
A. The output could be 5-1 6-1 6-2 5-2
B. The output could be 6-1 6-2 5-1 5-2
C. The output could be 6-1 5-2 6-2 5-1
D. The output could be 6-1 6-2 5-1 7-1

Ans: B

解說:
第23行run方法是二條執行會執行的程式碼,
run呼叫hit同步的方法印出"執行緒的id-i",同步的方法同一時間只有一個執行緒可進入,所以絕不會產生交互執行的現象,一定是一條執行緒跑完hit方法(印完xx-1和xx-2),才換另一個執行。

Comments

Popular posts from this blog

Android-使用webview在V3版的Google地圖GPS定位