https://product.kyobobook.co.kr/detail/S000000935083
자바로 개발하면서 병렬 프로그래밍의 고민을 해본적이 있다면 유용한 책이다.
- 'volatile' 은 변수는 공유하고 항상 다른 스레드가 보관해둔 최신 값을 읽을 수 있다.
- 자바는 스레드 강제로 멈추는 방법은 없고 인터럽트를 사용한다.
- 데몬 스레드는 예고없이 종료되어 애플리케이션을 시작 종료에 사용하기 좋은 방법이 아님.
- Thread.start대신 Thread.run 메서드가 호출되는지 확인
- CPU를 많이 사용하는 경우 N개의 CPU를 사용한다면 thread pool에서 스레드 개수를 N+1로 최적화
- 해제되지 않은 락이 있는지 확인
- 빈 sychronized 블록이 있는 지 확인.
- JVM이 스레드를 대기 상태로 둘 때 스핀 대기와 운영 체제가 제공하는 기능을 사용해 스레드를 대기상태로 둘 수 있다.
- join 메서드를 사용해 정상적으로 종료 되는지 확인할 때 Runnable 대신 Thread를 상속 받아 사용하는게 더 낫다.
- synchronized 구문 대신 기계적으로 ReenterantLock을 사용할 필요는 없고, 꼭 필요한 경우 사용.
예제와 설명이 밸런스 있었던 책인 것같다. 어려운 개념들은 비유를 잘 들어서 읽기 정말 좋았다.