NMP-Study / EffectiveJava2022

Effective Java Study 2022
5 stars 0 forks source link

아이템 84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라 #84

Closed okhee closed 1 year ago

windowforsun commented 1 year ago

스레드 스케줄러

이식성이 좋은 프로그램

실행 가능한 스레드의 평균 수 줄이기

바쁜 대기(BUSY WAITING)를 피하기

public class SlowCountDownLatch {
    private int count;

    public SlowCountDownLatch(int count) {
        this.count = count;
    }

    // 프로세서에 큰 부담을 주는 상태 검사
    public void await() {
        while(true) {
            synchronized (this) {
                if(this.count == 0) {
                    return;
                }
            }
        }
    }

    public synchronized void countDown() {
        if(count != 0) {
            count--;
        }
    }
}

Thread.yield 사용하지 않기