inblog logo
|
harimmon
    심화 과정

    [심화] 9. 폴링

    백하림's avatar
    백하림
    Jul 25, 2025
    [심화] 9. 폴링
    Contents
    ✅ 폴링(Polling)이란?🔁 폴링 구조 특징🔄 비교: 폴링 vs 푸시 vs 옵저버
    🔥

    ✅ 폴링(Polling)이란?

    어떤 조건이 충족되었는지를 주기적으로 검사하여,
    조건이 만족될 때까지 계속 반복 체크하는 방식.
    즉, **"지금 됐어?"**라고 계속 물어보는 구조임.
    → 일정 간격으로 상태를 체크하는 반복 요청 모델

    App.java

    package ex08.polling; public class App { public static void main(String[] args) { LotteMart lotteMart = new LotteMart(); Customer1 customer1 = new Customer1(); // 1. 마트는 입고 준비 new Thread(() -> { lotteMart.received(); // 5초 }).start(); // 2. 입고 확인 while (true) { try { Thread.sleep(100); } catch (InterruptedException e) { throw new RuntimeException(e); } if (lotteMart.getValue() != null) { // request (폴링) customer1.update(lotteMart.getValue() + "이 들어왔습니다."); break; } else System.out.println("상품이 아직 들어오지 않았어요."); } } }

    Customer1.java

    package ex08.polling; public class Customer1 { public void update(String msg) { System.out.println("손님1이 받은 알림 : " + msg); } }

    LotteMart.java

    package ex08.polling; public class LotteMart { private String value = null; public String getValue() { return value; } public void received() { for (int i = 0; i < 5; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } value = "상품"; } }
    notion image
    🔥
    1. LotteMart.received()가 5초 뒤에 value를 "상품"으로 설정
    1. 메인 쓰레드에서는 0.1초마다 lotteMart.getValue()가 null인지 체크함
    1. null이면 "상품이 아직 들어오지 않았어요." 출력 (폴링)
    1. 값이 들어오면 "손님1이 받은 알림 : 상품이 들어왔습니다." 출력

    🔁 폴링 구조 특징

    항목
    설명
    기술 방식
    일정 주기로 상태를 직접 확인함 (Thread.sleep + if)
    장점
    구현 간단, 동기 흐름 유지 가능
    단점
    자원을 계속 사용함 (CPU 낭비), 응답 지연 발생 가능
    비동기 아님
    이벤트나 콜백이 아니라 내가 직접 감시해야 함

    🔄 비교: 폴링 vs 푸시 vs 옵저버

    방식
    설명
    자원 효율성
    응답 속도
    구조/관계
    예시 표현
    폴링
    직접 주기적으로 확인
    ❌ 낮음
    ⏱ 지연 가능
    단방향
    "계속 새로고침”
    푸시
    서버가 알아서 알려줌
    ✅ 좋음
    ✅ 빠름
    주로 1:1
    "DM 오면 진동 울리기”
    옵저버 패턴
    상태 변화 감지 후 옵저버에게 알림
    ✅ 좋음
    ✅ 빠름
    1:N 구조
    "내가 상태 바꾸면 구독자들 전부에게 알림”

    콜백 메서드

    🔥
    콜백은 어떤 메서드 안에서, 외부로부터 전달받은 다른 메서드를 간접적으로 실행하는 구조로, 호출 흐름이 뒤로 위임되는 비동기적/동적 실행 방식이다.
    Share article
    Contents
    ✅ 폴링(Polling)이란?🔁 폴링 구조 특징🔄 비교: 폴링 vs 푸시 vs 옵저버

    harimmon

    RSS·Powered by Inblog