inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

AtomicInteger.get()을 CAS 연산 후 반환값으로 사용하면 안 되는 이유 공유

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

AtomicInteger.get()을 CAS 연산 후 반환값으로 사용하면 안 되는 이유 🚨 핵심 문제: 원자성에 대해서 다시 생각해보기 CAS 연산의 원자성은 compareAndSet() 호출 자체에만 적용됨 CAS 성공 후 get() 호출 은 완전히 별개의 연산 두 연산 사이에 다른 스레드가 개입 가능 멀티스레드 환경에서는 언제든지 다른 스레드가 개입 가능 개발자는 OS가 중간에 어떤 스레드를 호출할지 알 수 없음 🔍 문제 발생 메커니즘 1. 시간적 틈(Time Gap) 존재 result = atomicInteger.compareAndSet(getValue, getValue + 1); // ✅ 원자적 // ← 이 시점에서 다른 스레드가 값을 변경할 수 있음 return atomicInteger.get(); // ❌ 별개의 연산, 원자성 보장 안됨 2. 스레드 스케줄링의 불확실성 sleep(100) 동안 CPU가 다른 스레드로 전환 CAS 성공 직후에도 스케줄러가 해당 스레드를 중단 시킬 수 있음 먼저 시작된 스레드가 먼저 완료된다는 보장 없음 📊 실제 문제 시나리오 초기값: atomicInteger = 0 Thread A: getValue = 0 Thread A: compareAndSet(0, 1) 성공! → atomicInteger = 1 Thread A: CPU 스케줄러에 의해 중단됨 Thread B: getValue = 1 Thread B: compareAndSet(1, 2) 성공! → atomicInteger = 2 Thread A: 재개됨 Thread A: atomicInteger.get() 호출 → 2 반환 ❌ 결과 : Thread A가 실제로는 0→1로 증가시켰지만, 2를 반환하게 됨 ✅ 올바른 해결책: getValue + 1 사용 동작 원리 private static int incrementAndGet(AtomicInteger atomicInteger) { int getValue; boolean result; do { getValue = atomicInteger.get(); // 현재값 저장 result = atomicInteger.compareAndSet( // CAS 연산 getValue, getValue + 1 ); } while (!result); return getValue + 1; // CAS에서 사용한 기댓값 + 1 } 장점 CAS 연산 시점의 값 고정 : getValue 는 CAS 연산에서 사용한 정확한 기댓값 다른 스레드 개입 무관 : 이후 다른 스레드가 값을 어떻게 변경하든 영향받지 않음 메서드 의미 보장 : "이 메서드가 실제로 설정한 값"을 정확히 반환 🎯 핵심 교훈 ❌ 잘못된 가정 "CAS 성공 후 바로 get()을 호출하면 방금 설정한 값을 가져올 것이다" ✅ 올바른 이해 원자성은 단일 연산에만 적용 연산 간의 순서나 연속성은 보장되지 않음 멀티스레드 환경에서는 언제든지 다른 스레드가 개입 가능 개발자는 OS가 중간에 어떤 스레드를 호출할지 알 수 없음 💡 실무 적용점 AtomicInteger의 내장 메서드 활용 // 직접 구현하지 말고 내장 메서드 사용 int result = atomicInteger.incrementAndGet(); CAS 패턴 사용 시 주의사항 연산 결과는 CAS에서 사용한 값을 기준으로 계산 별도의 get() 호출로 "현재값"을 가져오려 하지 말 것 원자성의 범위 명확히 이해 단일 메서드 호출 = 원자적 여러 메서드 호출의 조합 = 원자적이지 않음

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
개발하는쿼카 댓글 1 좋아요 1 조회수 87

스타일이 적용 안되는 문제

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요, 선생님. 현재 블로그 상세 목차 UI까지 강의 수강했는데 코드 수정한 후 local에 띄어보니 스타일이 적용 안되는 문제가 발생했습니다. 선생님 github에서 해당 강의 관련 코드 다 가져와서 복붙 했는데도 저러네요... 제가 왕초보라서 도와주시면 감사하겠습니다!

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
댓글 2 좋아요 0 조회수 131

pykrx 설치 실패

해결됨

챗GPT와 파이썬으로 주식 자동매매 앱 및 웹 투자 리포트 만들기

https://inf.run/zqFYv 이 게시글과 실패 로그가 완전히 동일하고 댓글대로 했지만 해결되지 않았습니다. 파이썬 32bit 와 호환이 잘 안되는 것 같은데 32bit 파이썬으로 꼭 설치해야하는 것이죠? 혹시 패키지별로 어떤 버젼들을 설치하셨는지, requirements.txt 알려주실 수 있으실까요? 감사합니다.

  • python
  • 재테크
  • streamlit
  • chatgpt
  • 프롬프트엔지니어링
피카츄 댓글 4 좋아요 0 조회수 261

uvicorn 명령어 수행 오류

미해결

처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]

https://inf.run/wLydT 해당 질문과 동일한 오류가 생겨서 답변을 참고해 PATH 등록을 했습니다만 여전히 동일한 오류코드가 뜨며 인식 불가능한 명령어라고 뜹니다. 다른 문제가 있을까요? 위 답변에서 알려준 확인 명령어들을 사용했을 때에는 설치되었다고 뜹니다. 참고로 현재 영상을 수강하는 시점에서는 아나콘다의 최신버전 설치에 따라 python 또한 3.13.5 버전으로 설치되었습니다.

  • python
  • mvc
  • sqlalchemy
  • FastAPI
  • backend
lucia25834 댓글 1 좋아요 0 조회수 161

영상에서 설명이 잘못됐고 자막이 맞는 내용이라고 자막에 표기

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

1MB = 100만개라고 말씀하시고 자료에도 그렇게 나오는데 자막만 이상한 내용이 떠 있네요. 자막이 맞는 내용이군요. 설명하시는 내용이 잘못된 것이라고 자막에 나온다면 좋을거 같네요. 왜 자막과 음성이 다른 내용을 얘기하시나 했습니다.

  • python
  • 코딩-테스트
  • 알고리즘
아라레 댓글 2 좋아요 0 조회수 138

포맷팅 질문

해결됨

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

포맷팅 복습하다가 질문드립니다. print('나는 {}호선을 타고 학교를 가'.format(6)) print('나는 {0}호선을 타고 학교를 가'.format(6)) 동일한 출력 값인데, {}안에 인덱스(위치 숫자)를 넣어주면 그 값이 들어가게 된다고 하셨는데 그럼.. print('나는 {1}차를 타고 학교를 가'.format('우리집')) print('나는 {1}호선을 타고 학교를 가'.format(643)) 이면 첫번째 줄은 포맷함수의 문자열의 인덱스 1번 위치인 리 두번째 줄은 포맷함수의 숫자열 인덱스 1번 위치인 4 가 각각 출력되어 중괄호 안에 들어가게 되나요?

  • python
  • 머신러닝
  • 빅데이터
  • 인공지능(ai)
  • ax(에이전트-경험)
hyolee 댓글 1 좋아요 2 조회수 74

if 질문

해결됨

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

if 사용시 작성 관련하여 반드시 아래의 형식을 따라야 값이 제대로 출력되는지요 if 1: print('true') else: print('false') 한줄로 입력하거나 if'sojin': print('true') else:print('false') 아니면 띄어쓰기를 틀리면 아래와 같이, if 1: print('true') else: print('false') 오류로 나옵니다. 문법과 같이 작성양식도 정해져 있어서 if사용시는 if 1: print('true') else: print('false') 표시 형식을 따라야 하는지 질문 드립니다.

  • python
  • 머신러닝
  • 빅데이터
  • 인공지능(ai)
  • ax(에이전트-경험)
hyolee 댓글 1 좋아요 2 조회수 105

form 분리 시 form action

해결됨

실전! Django 입문 [최신 5.2 버전]

안녕하세요! 강의 2분 35초에 post_list.html에서 post_create.html로 폼 분리하고 path 따로 만들었는데 form action은 그대로 'posts'라고 둬도 되는건가요,,? 저는 'post_create'로 변경해줘야 올바르게 연결이 되는데 혹시 제가 놓친 부분이 있나 해서 질문 드립니다.

  • python
  • django
  • aws
  • rest-api
  • drf
최수빈 댓글 2 좋아요 0 조회수 88

안녕하세요 강의자료 문의입니다.

해결됨

FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기

안녕하세요 강의에서 보여주시는 강의 자료(노션)는 없는걸까요?

  • python
  • aws
  • docker
  • sqlalchemy
  • FastAPI
핫셀러교육계정 댓글 2 좋아요 1 조회수 145

오타 제보입니다.

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

11. 동시성 컬렉션 PDF 13 페이지 당연한 이야기지만 다음과 같이 나누어 작성해도 된다. SimpleList basicList = new BasicList(); SimpleList proxyList = new SyncProxyList(basicList); test(list) 강의 5:40 즈음 나오는 내용입니다. test() 에 proxyList 가 인자로 전달되어야하는데 pdf에는 test(list) 로 작성되어있네요. 감사합니다

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
yoon6669 댓글 2 좋아요 0 조회수 56

FASTAPI 소개와 핵심 특징 강의 내용에서 화면이 멈춰있습니다.

해결됨

FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기

💡 질문하기 전에 먼저 확인해보세요! 답변을 기다리는 동안, 아래 항목들을 먼저 확인해보시면 문제가 해결될 수도 있어요. 강의 내용 다시 보기: 혹시 놓친 부분이 없는지 해당 챕터의 강의를 한 번 더 돌려보셨나요? 오타 및 들여쓰기 확인: 파이썬은 특히 들여쓰기에 민감해요. 코드에 오타나 잘못된 들여쓰기는 없는지 꼼꼼히 확인해주세요. 에러 메시지 검색: 빨간색 에러 메시지가 떴다면, 메시지 전체를 복사해서 구글에 그대로 붙여넣기 해보세요. 전 세계 개발자들이 비슷한 문제를 겪고 해결책을 공유해두었을 확률이 높습니다. Q&A 게시판 검색: 혹시 다른 분이 먼저 비슷한 질문을 올렸는지 게시판을 한번 살펴보는 것도 좋은 방법이에요. 해당 강의 화면에서 코드를 보고 설명하시는 것 같은데 화면이 계속 인프런 강의소개 페이지인데 제가 맞게 보고 있는걸까요?

  • python
  • aws
  • docker
  • sqlalchemy
  • FastAPI
kscr37 댓글 2 좋아요 1 조회수 180

EmailOperator 의 smtp_default 관련 문의

미해결

Airflow 마스터 클래스

안녕하세요. Airflow 3.0 에서 EmailOperator 사용시 conn_id 를 세팅하지 않으면 smtp_default 를 기본적으로 사용하고 있어보입니다. smtp_default 세팅은 config 파일에 보니 email_conn_id(AIRFLOW__EMAIL__EMAIL__CONN__ID) 에 세팅되어 있어 EmailOperator 와 fail났을때 smtp_default를 세팅해놓으면 동시에 사용 가능한것은 아닐까요?

  • python
  • 데이터-엔지니어링
  • airflow
pstel 댓글 2 좋아요 0 조회수 68

최대값 int(1e6, 1e7, 1e8) 기준

미해결

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

선생님 안녕하세요. 최대 혹은 최소값으로 ans를 int(1e6, 1e7, 1e8) 등 다양하게 설정하시는데 혹시 기준이 있을까요? 문제를 풀다 보면 탐색 전에 미리 최소값이나 최대값을 세팅해야 하는 경우가 있는데, 그 세팅의 베스트 프랙티스나 혹은 float(int) 같이 최대/최소값을 따로 정하시는 로직이 후반부에 나오는지 궁금합니다.

  • python
  • 코딩-테스트
  • 알고리즘
Jespy 댓글 2 좋아요 0 조회수 318

멀티스레드일 때 테스트 결과 공유

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

영한님이 단일 스레드일 때 테스트 하셨는데요. 멀티 스레드일 때 테스트 결과도 궁금하신 분들이 있을 것 같아 공유 드립니다 :) 빠른 테스트를 위해서 sleep 은 사용하지 않았습니다. public class IncrementPerformanceMain { public static final int COUNT = 1_000_000; public static void main(String[] args) throws InterruptedException { test(new BasicInteger()); test(new VolatileInteger()); test(new SyncInteger()); test(new MyAtomicInteger()); } private static void test(IncrementInteger incrementInteger) throws InterruptedException { long startMs = System.currentTimeMillis(); Runnable runnable = new Runnable() { @Override public void run() { for (int i = 0; i < COUNT; i++) { incrementInteger.increment(); } } }; ArrayList<Thread> threads = new ArrayList<>(); for (int i = 0; i < 100; i++) { Thread thread = new Thread(runnable); threads.add(thread); thread.start(); } for (Thread thread : threads) { thread.join(); // 모든 스레드가 종료 될 때 까지 기다림 } long endMs = System.currentTimeMillis(); System.out.println( incrementInteger.getClass().getSimpleName() + ": ms=" + (endMs - startMs) + ", result=" + incrementInteger.get()); } } 결과 BasicInteger: ms=32, result=88652038 VolatileInteger: ms=3653, result=17721836 SyncInteger: ms=4882, result=100000000 MyAtomicInteger: ms=6953, result=100000000 MyAtomicInteger 보다 SyncInteger 가 성능이 좋은 이유는 CAS 는 기본적으로 락보다는 빠르지만, 경쟁이 심하면 CAS 실패로 재시도를 반복 하기 때문에 성능이 락보다 안나오고 있는 것 으로 보이네요. 추가로 BasicInteger 에 비해서 VolatileInteger 의 손실율이 큰 이유는 모두가 동시에 메인 메모리에 접근하게 되면서 발생한 문제로 보이네요. 비유적으로 설명하면 BasicInteger : 각자 수첩(캐시)에 메모하고 나중에 합침 → 충돌 적고, 결과는 꽤 괜찮음 (운이 좋으면) VolatileInteger : 100명이 하나의 화이트보드(메인 메모리)에 동시에 적으려는 상황 → 끊임없는 덮어쓰기, 충돌 많음 → 결과는 엉망 감사합니다. ^0^

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
개발하는쿼카 댓글 1 좋아요 0 조회수 81

JWT 발급을 Front에서 하는게 맞는건가요??

해결됨

인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트

안녕하세요. 강의를 듣던 중 궁금한 부분이 있어서 질문드립니다. 토큰 발급은 기본적으로 백엔드에서 처리하는 것으로 알고있는데, 본 강의에서는 frontend/auth.ts 에서 토큰을 발급하고 있습니다. 의도하신건지? 궁금해서 질문드립니다. 감사합니다.

  • aws
  • docker
  • next.js
  • nestjs
  • prisma
진우 댓글 3 좋아요 0 조회수 228

이상치 데이터 합성 및 기본데이터셋 생성

해결됨

컴퓨터 비전 이상 탐지, 개발부터 배포까지 올인원 마스터

안녕하세요 강사님! 이상치 데이터 합성 및 기본데이터셋 생성 부분에서 이상치 데이터를 생성하는 파일 코드 공유가 따로 없어서요! 혹시 해당 파일은 이메일로 공유를 따로 주실까요?? 만약 그렇다면 아래 이메일로 공유좀 부탁드리겠습니다! main3373@gmail.com

  • python
  • 머신러닝
  • 딥러닝
  • azure-databricks
  • 인공지능(ai)
나띵메로 댓글 2 좋아요 0 조회수 112

koreanjson 관련 사이트가 접속이 안되요

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

koreanjson.com 접속이 계속 안되서 대체 사이트가 있을까요?

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
skykwj0422 댓글 2 좋아요 0 조회수 96

[기존 이메일] 라벨링 작업도 가능할까요?

미해결

퇴근 2시간 당기는 자동화, 코딩 몰라도 됩니다

안녕하세요, <이메일 지옥, 자동으로 이메일을 분류하고 라벨링 하기> 강의 잘 들었습니다. 강의 워크플로우대로 노드 설정도 잘 했구요! 실습을 하면서 궁금한 점이 한 가지 생겼는데요, 혹시 기존에 이미 왔던 이메일들도 자동으로 라벨링 하는 작업을 진행할 수 있을까요?

  • python
  • excel
  • no-code
  • n8n
  • 인공지능(ai)
이수민 댓글 1 좋아요 0 조회수 126

모의투자에서는 받은 API키로 잘되는데 실제 API키로 변경해서 사용하면 기간이 만료된 token 입니다 라고 표시됨

해결됨

베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신

KIS_USE_MOCK=true -> 모의 KIS_USE_MOCK=false -> 실제 위처럼 설정변경도 해보면서 진행했는데 운영으로 테스트시 { "rt_cd": "1", "msg1": "기간이 만료된 token 입니다.", "msg_cd": "EGW00123" } 이렇게 출력되고 해외주식 잔고조회가 안됩니다. 보니깐 이게 모의로 연결했다 모의의 token이 남아서 그런것 같아서 소스 조금 수정해서 일단 다시 받으라고 했더니 운영토큰 발급됐다고 카톡이 오는데 아래처럼 이번엔 해당 서비스를 찾을수 없다고 하네요 Response body Download { "rt_cd": "1", "msg_cd": "MCA00124", "msg1": "해당 서비스를 찾을수 없습니다." } Response headers content-length: 86 content-type: application/json date: Wed,30 Jul 2025 12:23:13 GMT server: uvicorn 테스트는 http://localhost:8000/balance/overseas 로 해외주식 잔고조회 호출 한겁니다.

  • python
  • 딥러닝
  • 빅데이터
  • FastAPI
  • 데이터-엔지니어링
임헌명 댓글 4 좋아요 1 조회수 355

Post API 강의 질문

해결됨

실전! FastAPI 입문

POST API 첫번째 강의에서 main.py의 52번 줄에 request를 dict() 형식으로 꼭 맞춰 주어야하나요?? 출력은 request >> id=4 contents='aaa' is_done=True request.dict() >> {'id': 4, 'contents': 'aaaa', 'is_done': True} 이렇게 되는데, 그냥 request 만 써도 swagger UI에서 보았을 땐 똑같이 dict 형식으로 들어오더라구요. 궁금해서 문의드립니다.

  • python
  • sqlalchemy
  • orm
  • FastAPI
  • pytest
김민철 댓글 2 좋아요 0 조회수 94

인기 태그

인프런 TOP Writers

주간 인기글