페북에서 유명환 대표님께서 공유해 주신 링크입니다.
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