이야기박스

Effective java 3/E - 동시성 (item 78~84) 본문

Programming Language/JAVA

Effective java 3/E - 동시성 (item 78~84)

박스님 2019. 1. 11. 10:57
반응형

Item 78. 공유 중인 가변 데이터는 동기화해 사용하라

동기화
- 프로그램 일관성 제공
- 스레드간 통신 역할
==> "동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다"

Thread.stop ==> 사용 금지
--> 다른 스레드를 멈출때는 boolean 값을 이용 하자

boolean 사용할 때는 그냥하면 최적화되버려서 동작 안할 수도 있음
- synchronized를 걸기
- volatile 사용할 것
( * volatile 주의할 점 --> 책에 있는 내용 참조할 것 '++' 연산 조심 ; safety failure)
- Atomic*** 사용할 것 (이게 젤 좋은것 같음)

가장 좋은 방법은 가변 데이터는 공유하지 말자
불변 데이터만 공유하던가



Item 79. 과도한 동기화는 피하라

과도한 동기화 --> 성능 저하, 교착 상태, 예측 불가능한 상황

동기화 블록 안에 제어를 절대 클라이언트에 양도하면 안됨
외부에서 컨트롤 가능한 요소들이 들어오는건 절대 안됨 (외계인 메서드; alien method)



Item 80. 스레드보다는 실행자, 태스크, 스트림을 애용하라

Item 81. wait과 notify보다는 동시성 유틸리티를 애용하라

Item 82. 스레드 안정성 수준을 문서화하라

Item 83. 지연 초기화는 신중히 사용하라


반응형