이야기박스
Effective java 3/E - 동시성 (item 78~84) 본문
반응형
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. 지연 초기화는 신중히 사용하라
반응형
'Programming Language > JAVA' 카테고리의 다른 글
Java) 하이로우 게임 (1) | 2019.06.02 |
---|---|
Effective java 3/E - 직렬화 (item 85~90) (0) | 2019.01.16 |
Effective java 3/E - 예외 (item 69~77) (0) | 2019.01.03 |
Effective java 3/E - 일반적인 프로그래밍 원칙 (item 57~68) (0) | 2018.12.27 |
Effective java 3/E - 메서드 (item 49~56) (0) | 2018.12.20 |