글
관련 이론 및 문법
(데드락 (deadlock) 참고)
http://kkikkodev.tistory.com/138
문제 의도
데드락에 대한 다음의 설명 중 옳은 것을 2 개 고르는 문제입니다.
A. 동시에 두 개 이상의 쓰레드들이 데드락에 걸리는 것이 가능합니다.
B. JVM 은 다수의 쓰레드들이 데드락에 걸리지 않게 하도록 구현되어 있습니다.
C. 데드락된 쓰레드들은 그들의 sleep 메소드를 호출함으로써, 도중에 데드락을 빠져 나올 수 있습니다.
D. 데드락은 wait, notify, notifyAll 메소드들이 잘못 호출되었을 때만 발생합니다.
E. 싱글 쓰레드 프로그램에서, 동기화된 블럭이 잘못 사용되면, 데드락에 걸릴 수 있습니다.
F. 어떤 부분의 코드가 데드락 가능성이 있다면, Thread.yield() 메소드 호출문장을 삽입하여 데드락 가능성을 없앨 수 없습니다.
답안
A, F
풀이 방법
먼저, 보기 A 는, 동시에 여러 동기화된 블럭들이 실행되다가, 데드락에 걸릴 수 있기 때문에 답안이 됩니다. 보기 B 는, JVM 은 데드락을 막아주지 못하므로, 개발자가 신경써서 코딩해야 하므로, 답안 후보에서 제외합니다. 보기 C 는, sleep 메소드는 현재 실행중인 쓰레드를 멈추는 역할만 하지, lock 을 해제하지 않고 그대로 지니고 있기 때문에, 멈춰있는 동안, 다른 쓰레드가 진입할 수 없으므로, sleep 을 통해서는, 데드락을 빠져 나오지 못하게 됩니다. 따라서 C 도 답안 후보에서 제외합니다. 보기 D 는, 데드락은 wait, notify, notifyAll 메소드가 잘못 호출되었을 때 말고도, 많은 상황에서 발생하게 되므로, 답안 후보에서 제외합니다. 보기 E 는, 싱글 쓰레드 프로그램에서는 데드락이 발생될 일이 없기 때문에 답안 후보에서 제외합니다. 보기 F 는, 데드락은 yield 메소드 혹은 wait 메소드로 해결할 수는 있습니다. 하지만, yield 메소드를 통해서 데드락을 처리하자는 것이지, 원천적으로 데드락 발생 가능성 자체를 예방할 수는 없으므로, 이는, 답안이 됩니다.
따라서, 답안은 A 와 F 가 됩니다.
'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) - 2 번 (0) | 2015.07.07 |
RECENT COMMENT