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