2012년 9월 26일 수요일

OCJP 문제풀이 - Question 2



QUESTION 2


Which two statements are true? (Choose two.)

A. It is possible for more than two threads to deadlock at once.
두개이상의 쓰레드가 동시에 데드락 상태가 될 확률이 있다.

B. The JVM implementation guarantees that multiple threads cannot enter into a deadlocked state.
JVM은 다중쓰레드가 데드락 상태에 들어가지 않도록 보장한다.

C. Deadlocked threads release once their sleep() method's sleep duration has expired.
데드락 상태의 쓰레드는 sleep() 된 기간이 끝나면 데드락이 풀린다.

D. Deadlocking can occur only when the wait(), notify(), and notifyAll() methods are used incorrectly.
데드락은 오직 wait(), notify(), notifyAll() 함수 잘못된 사용으로만 걸린다.

E. It is possible for a single-threaded application to deadlock if synchronized blocks are used incorrectly.
하나의 쓰레드만 쓰는 어플리케이션에서 synchronized 블록을 잘못사용하면 데드락에 걸릴 가능성이 있다.

F. If a piece of code is capable of deadlocking, you cannot eliminate the possibility of deadlocking by inserting invocations of Thread.yield().
만약 코드의 일부분이 데드락에 걸릴가능성이있다면 Thread.yield() 를 삽입하는 것으로 데드락의 가능성을 제거할수는 없다.

Answer: AF
Section: All

Explanation/Reference:
B. JVM 이 자체적으로 쓰레드가 Deadlock에 걸리지 않도록 보장하지는 않는다.
C. 데드락 상태의 쓰레드는 자동으로 풀리지 않을 수도 있다.
D. 데드락은 꼭 해당함수를 잘못사용했다고 걸리는 것이 아니다.
E. 데드락은 혼자서는 걸리지 않는다.

쓰레드 참고 자료 - http://gommoo.blogspot.com/2012/09/thread.html

블로그 보관함