글
관련 이론 및 문법
(synchronized 참고)
http://kkikkodev.tistory.com/143
(Runnable 인터페이스 참고)
http://kkikkodev.tistory.com/144
문제 의도
주어진 코드를 컴파일하여 실행한 출력 결과를 2 개 고르는 문제입니다.
답안
C, D
풀이 방법
PingPong 클래스는 Runnable 인터페이스를 상속하고 있습니다. 내부에는 synchronized 된 hit 메소드가 있고, main 메소드와 run 메소드가 있습니다. hit 메소드는 매개변수로 long 형 n 을 받아서 for 문을 i 를 1 부터 2 까지 변화하면서 2 번 돌면서 n 과 i 를 조합하여 출력하고 있습니다. run 메소드에서는 hit 메소드를 호출하면서 매개변수로 현재 thread 의 id (Thread.currentThread().getId()) 를 전달하고 있습니다.
main 메소드를 실행하면 PingPong 객체를 2 개 생성하여 각각 또 Thread 객체를 생성하여 매개변수로 넘기고 각각 start 하고 있습니다. 두 개의 thread 가 생성되는데 이 2 개의 thread 는 하나의 PingPong 객체가 아닌 각자의 PingPong 객체를 가지고 있고, 이 객체의 hit 메소드를 호출하게 되므로 서로 간섭을 주지 않게 됩니다. 따라서 첫 thread 의 id 가 7 이라고 가정하고, 두 번째 thread 의 id 가 8 이라고 가정하면 두 thread 가 각자의 hit 메소드를 호출하기 때문에, "7-1 7-2", "8-1 8-2" 이 출력될 것입니다. 물론 이 4 개의 출력 패턴이 서로 병행적으로 일어나기 때문에 순서가 섞일 수는 있습니다. 하지만 무조건 7-1 다음에 7-2 가 와야하고, 8-1 다음에 8-2 가 와야 합니다.
보기 A 를 살펴보면 8-1 7-2 8-2 7-1 이 나와 있는데 7-2 가 오고 7-1 이 왔기 때문에 답안 후보에서 제외합니다.
보기 B 를 살펴보면 7-1 7-2 8-1 6-1 이 나와 있는데 6-1 까지 포함하면 3 개의 thread 가 되므로 답안 후보에서 제외합니다.
보기 C 와 D 를 살펴보면 순서가 서로 섞여 있지만, 7-1 다음에 어딘가에 7-2 가 오고, 8-1 다음에 어딘가에 8-2 가 오고 있으므로 답안이 됩니다.
결과적으로 답안은 C 와 D 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 25 번 (0) | 2016.11.12 |
---|---|
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 24 번 (0) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 23 번 (0) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 22 번 (2) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 21 번 (4) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 19 번 (0) | 2016.11.06 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 18 번 (0) | 2016.11.05 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 17 번 (0) | 2016.10.30 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 16 번 (0) | 2016.10.30 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 15 번 (0) | 2016.10.30 |
RECENT COMMENT