10 ch.
- 활동성 문제를 해결하렴년 일반적으로 애플리케이션을 종료하는 것 외에는 방법이 없다는 데 심각성의 원인이 있음
- 가장 흔한 형태의 활동성 문제는 락 순서에 의한 데드락
- 락 순서에 의한 데드락을 방지하려면 애플리케이션을 설계하는 단계부터 여러 개의 락을 사용하는 부분에 대해 충분히 고려해야함
- 애플리케이션 내부의 스레드에서 두개 이상의 락을 한꺼번에 사용해야 하는 부분이 있다면, 항상 일정한 순서를 두고 여러 개의 락을 확보해야만 함
- 효과적인 해결 방법은 항상 오픈 호출 방법을 사용해 메소드를 호출하는 것
- 오픈 호출을 사용하면 한 번에 여러개의 락을 사용하는 경우를 줄일 수 있고, 따라서 여러 개의 락을 사용하는 부분이 어디인지 쉽게 찾아낼 수 있음
11 ch.
- 멀티스레드를 사용하는 큰 이유 중 하나는 다중 CPU 하드웨어를 충분히 활용하고자 하는 것
- 암달의 법칙에 따르면 애플리케이션의 확장성은 반드시 순차적으로 실행돼야만 하는 코드가 전체에서 얼마만큼의 비율을 차지하냐에 달렸다고 함
- 자바 프로그램의 내부에서 순차적으로 처리해야만 하는 가장 중요한 부분은 독점적인 락을 사용하는 부분
- 락으로 동기화하는 범위를 세분화해 정밀도를 높이거나 락 확보 시간을 최소한으로 줄이는 기법을 사용해 락을 최소한만 사용하도록 해야함
- 독점적인 락 대신 독점적이지 않은 방법을 사용하거나 대기 상태에 들어가지 않는 방법을 사용하는 것도 중요함
질문
- 주로 사용하는 성능 측정 도구 및 기준은 무엇인가?
- 스레드 우선 순위를 변경해야하는 경우는 어떤것이 있을까?