본문 바로가기

TIL

2022/03/02 TIL

자바 병렬 프로그래밍

모든 자바 프로그램은 기본적으로 스레드를 사용한다.
JVM을 시작시키면 main 메소드를 실행할 주 스레드 뿐 아니라 가비지 컬렉션이나 객체 종료와 같은 내부 작업을 담당할 스레드도 생성한다.

JAVA가 동작하는 원리를 알기 위해서는 병렬 처리에 대한 이해가 더 높아야 한다는 생각을 했다.

병렬 프로그램은 단순하게 스레드와 락만 신경 써서 될 일은 아니다.
하지만 스레드와 락은 그저 목적을 위한 도구일 뿐이다.
근본적으로 공유되고 변경할 수 있는 상태에 대한 접근을 관리하는 것이다.

병렬 처리하면 JAVA에서는 자연스럽게 '스레드'와 '락(lock)' 같은 단어들이 떠오르기 마련이다. 이번 기회에 도구가 아닌 본질에 대해 고민해보고 싶다.

스레드 안전한 클래스를 설계할 땐, 바람직한 객체 지향 기법이 왕도다.

객체 지향은 어디서든 중요하다는 것을 다시 한 번 느끼게 되었다.

스레드 안정성에 대한 정의의 핵심은 모두 정확성 개념과 관계있다.
스레드 안정성에 대한 정의가 모호한 것은 정확성에 대한 명확한 정의가 없기 때문이다.
정확성이란 해당 클래스의 명세에 부합한다는 뜻이다.
코드 신뢰도가 많은 사람이 생각하는 정확성과 대략 일치한다.

어려운 개념을 학습할 때에는 단순한 정의부터 알고 가는 것이 좋다.
스레드 안정성은 정확성과 관련 있고 이는 코드 신뢰도로부터 온다.

'TIL' 카테고리의 다른 글

2022/03/07 TIL  (0) 2022.03.07
2022/03/03 TIL  (0) 2022.03.04
2022/02/28 TIL  (0) 2022.02.28
2022/02/24 TIL  (0) 2022.02.25
2022/02/23 TIL  (0) 2022.02.24