글
관련 이론 및 문법
(try ~ catch ~ finally 참고)
http://kkikkodev.tistory.com/106
문제 의도
주어진 소스코드에 대한 설명 중 옳은 것을 고르는 문제입니다.
A. 이 코드는 InterruptedException 이 발생될 수 있습니다.
B. 이 코드는 IllegalMonitorStateException 이 발생될 수 있습니다.
C. 이 코드는 10 분 후에 TimeoutException 이 발생될 수 있습니다.
D. obj.wait() 와 obj.notify() 의 순서를 바꾸면 이 메소드가 정상적으로 돌아갈 것입니다.
E. 또다른 쓰레드에서 notify 혹은 notifyAll 메소드를 호출한다면, 이 메소드가 정상적으로 돌아갈 것입니다.
F. obj.wait() 대신에 ((Thread)obj).wait() 로 바꾸지 않는다면 이 코드는 컴파일되지 않을 것입니다.
답안
A
풀이 방법
이 문제는 언뜻 보기에는 Thread 문제 혹은 동기화 문제처럼 보이지만, 예외처리에 관련된 문제입니다. Object 클래스의 wait 메소드의 원형을 살펴보면,
public final void wait() throws InterruptedException{...}
처럼, InterruptedException 이 발생될 수도 있으니, 이 메소드를 호출하는 쪽에서 try ~ catch ~ finally 로 해당 예외를 처리해주던지 혹은, throws InterruptedException 을 마찬가지로 사용하여 해당 메소드에서도 예외를 처리하지 않고 넘기던지 해야 합니다. 하지만 주어진 소스코드에서는, 두 가지 방법 중 하나도 사용되지 않아서, InterruptedException 을 방치하고 있습니다. 따라서 이 때문에 컴파일 에러가 나게 되는 것입니다. 따라서, 답안은 A 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 11 번 (0) | 2015.07.08 |
---|---|
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 10 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 9 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 8 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 7 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 6 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 5 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 4 번 (0) | 2015.07.08 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 3 번 (0) | 2015.07.07 |
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 1 번 (4) | 2015.07.07 |
RECENT COMMENT