질문있습니다.
1
작성한 질문수 1
동시성 이슈에 발생할 수 있는 상황에서,
A 변수에 대해 읽기 작업만 수행하는 코드(가시성 문제가 있을 수 있는 코드)에서는 volatile을 고려해볼 수 있고, A 변수에 대해 읽기 + 쓰기 작업도 있는 경우에는 synchronized와 atomic을 고려해볼 수 있겠네요.
제가 이해한 게 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 조성우님!
동시성 이슈에서 변수를 읽고 쓸 때 고려해야 할 원칙은 중요합니다. 조성우님의 이해는 적절한 방향입니다만, 각각의 기술의 특징을 좀 더 명확히 이해할 수 있으면 좋겠습니다.
volatile:
volatile키워드는 변수의 가시성을 보장하기 위해 사용됩니다. 이는 여러 스레드가 변수의 최신 값을 항상 보고해야 할 때 유용합니다. 다만volatile은 원자적 연산(atomic operation)을 보장하지 않기 때문에 읽기와 쓰기가 함께 있는 경우 적절치 않을 수 있습니다.synchronized:
synchronized블록이나 메서드는 경쟁 조건(race condition)을 방지하며, 변수가 여러 스레드에 의해 동시에 읽기 및 쓰기가 이뤄질 때 쓰입니다. 이는 단일 진입점(mutex)를 통해 동기화된 접근을 제공합니다.atomic: Java에서 제공하는 atomic 패키지는 원자적 연산을 지원하여, 멀티스레드 환경에서의 읽기와 쓰기 동시 작업을 더욱 안전하게 처리합니다. 이러한 클래스들(
AtomicInteger,AtomicLong등)은 lock을 사용하지 않으면서도 원자성을 보장합니다.
따라서, A 변수에 대해 단순 읽기라면 volatile을 고려하고, 읽기와 쓰기가 모두 있다면 synchronized나 atomic을 고려하는 것이 맞습니다.
관련하여 유사한 질문의 답변을 찾고자 하신다면, volatile에 대한 설명 과 같은 게시물을 참고하시면 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
MySql
1
21
2
강사님.. 하단 URL에 있었던 코드들 다운 받거나 공유 부탁 드립니다..
0
18
2
섹션3. 11 회원객체 다이어그램
0
21
1
팬텀리드 해결 예시 질문
1
25
1
OCP, DIP과 @Qualifier 어노테이션에 대해서 질문합니다.
0
23
1
노션 접근권
0
23
1
@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.
0
23
1
형 이번에 낸 책이랑 강의 내용에 차이가 있어?
1
43
1
형 나 몰래 책내면 모를 줄 알고?
1
35
1
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
24
1
멀티스레드
1
25
2
N+1 관련해서 질문있습니다.
0
40
3
성능 오버헤드
1
30
2
다음 강의는 언제 올려주시는지요?
0
40
2
하단 파일이 열리지 않습니다
0
35
1
ssh-keygen -t rsa -P "" 등 ssh 암호화? 는 하둡에서 필수인가요?
0
28
2
강의 중복 확인 요청
0
27
1
volatile에 대해 질문 있습니다.
2
45
2
Mark and Sweep
1
37
1
20년 4,5회 13번
0
27
2
GC 알고리즘
1
38
2
용어 질문
1
26
1
호출횟수 질문입니다.
1
38
2
실행과정 질문입니다.
2
40
1





