본문 바로가기

DevStory

[펌] Java Multithreading Interview

페북에서 유명환 대표님께서 공유해 주신 링크입니다.


http://javarevisited.blogspot.kr/2011/07/java-multi-threading-interview.html#.UpVjzUptx1I.facebook



아래는 간단한 발번역 질문과 답변에 걸려있는 링크들..

읽어보면 참 좋을듯 합니다. 


1. 스레드 T1,T2,T3가 있을때, T1 -> T2 -> T3 순으로 스레드가 실행되는 것을 보장하는 방법?

 - join


2. Lock interface가 synchronized block에 비해 advantage가 무엇?

 - reading / writing에 대해 각각의 Lock을 사용 할 수 있다. -> high performance


3. wait 과 sleep의 차이

 - wait은 lock 혹은 monitor를 반환하지만, sleep은 하지 않는다.

 - wait은 스레드간 통신을 위해 사용되나, sleep은 실행중 정지에 사용된다. (pause on execution)

 - http://javarevisited.blogspot.sg/2011/12/difference-between-wait-sleep-yield.html

 - http://javarevisited.blogspot.sg/2011/05/wait-notify-and-notifyall-in-java.html


4. blocking queue 구현

 - 만약  wait() and notify() method로 구현하였다면, java 5 concurrent class들로 다시 구현해보라고 할 수 있음


5. solve Produce consumer problem

 - 여러 방법이 있겠으나 BlockingQueue를 사용해서 구현하는 것도 하나의 방법


6. deadlock에 빠지는 프로그램을 구현 할 수 있나? 그리고 어떻게 해결 할 것인가?

 - http://javarevisited.blogspot.kr/2010/10/what-is-deadlock-in-java-how-to-fix-it.html


7. atomic operation이란?

 - http://javarevisited.blogspot.kr/2011/04/synchronization-in-java-synchronized.html


8. volatile란? synchronized method와 다른점은?

 - http://javarevisited.blogspot.kr/2011/06/volatile-keyword-java-example-tutorial.html


9. race condition이란? race condition을 어떻게 찾고 수정할것인가?

 - http://javarevisited.blogspot.sg/2012/02/what-is-race-condition-in.html


10. thread dump 뜨는 법, 분석하는 법

 - unix kill -3 , windows ctrl+break


11. run() 메서드를 직접 호출하지 않고, start() 메서드를 호출하는 이유는?

 - start() 메서드를 호출하면 새로운 스레드를 만들고, run() 메서드를 실행한다. 

 - http://javarevisited.blogspot.sg/2012/03/difference-between-start-and-run-method.html


12. blocked thread를 깨우는 방법?

 - wait(), sleep() or join() 메서드로 InterruptedException을 생성하며 깨어날것임

 - http://javarevisited.blogspot.sg/2012/02/what-is-blocking-methods-in-java-and.html


13. CyclicBarriar 와 CountdownLatch의 차이점

 - CyclicBarrier는 재사용 가능하나, CountdownLatch는 불가


14. immutable object란 무엇인가? 이게 병렬프로그래밍에서 어떠한 장점을 주는가

 - http://javarevisited.blogspot.kr/2010/10/why-string-is-immutable-in-java.html


15. 병렬처리 환경에서 일반적으로 부딫히는 문제가 무엇인가? 그리고 어떻게 해결하는가?

 - Memory-interference, race conditions, deadlock, live lock and starvation