inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]

Mutual Exclusion - 상호 배제

뮤텍스 수도 코드에 대한 질문

439

이민준

작성한 질문수 12

0

락을 점유중인 스레드만이 락을 해제할 수 있으므로 release에 while문은 필요없지않나요?

 

1. 락을 점유한 스레드만이 release할 수 있음.

2. 즉 release할때는 하나의 스레드만이 접근 가능함.

3. 고로 release에 있는 while문은 필요가없음.

추가로 제공해주신 아래 코드에서 lock 변수가 강의에서 보여주신 수도코드에서는 synchronized가 lock을 의미하고 value를 의미하는거죠?? 용어가 헷갈려서 문의드립니다.

public class Mutex {
    private boolean lock = false;
    public synchronized void acquired() {
        while (lock) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        this.lock = true;
    }
    public synchronized void release() {
        this.lock = false;
        this.notify();
    }
}

java 동시성 multithread synchronisation

답변 2

1

정수원

수도 코드에서 while은 락을 점유한 스레드만 락을 해제하기 위한 장치입니다

즉 아무나 release 를 실행할 수 없도록 하기 위함입니다

한 스레드가 aquired 를 실행한 상태에서 다른 스레드가 release 를 실행하지 못하게 해야 하는데 그럼 어떤 식으로 막을 수 있을까요?

자바에서는 synchronized 가 그 역할을 하고 있습니다

0

이민준

이해했습니다~ 감사합니다

멀티스레드 단일스레드

0

56

0

new Condition 부분 질문

0

81

1

13:00 강의 내용 이해 질문

0

99

1

강의 출시 질문 있습니다.

0

115

1

InterruptedExceptionThreadStopExample 질문입니다.

0

94

2

instance.getMyField()의 값이 왜 다른가요?

0

115

1

해당 강의 내용 무단 도용 신고

0

211

2

Thread Waiting 상태 관련 질문 드립니다.

0

183

1

단일연산변수 api

0

125

0

synchronized 블럭과 메인메모리 반영

0

146

0

실무에서 자바가 제공하는 락을 사용하는 경우

1

243

1

뮤텍스나 세마포어는 busy waiting이 없는 게 맞을까요?

0

159

1

16:50부분에서 타입락 질문드립니다.

0

110

2

16분 7초 뮤텍스 코드 관련해 질문드립니다.

0

160

2

동기화가 보장된다고 하더라도 스레드간 데이터 불일치가 발생할 수 있지 않나요??

0

199

2

리액티브-part2

0

180

2

문자열 풀 값을 이용한 String 변수

0

207

2

스레드 라이브러리는 커널과 같은 역할을 하지 못하나요?

0

173

1

자식 프로세스를 쓰는 이유

0

186

1

커널 모드 전환시 질문이 있습니다!

0

146

1

[공유] setName 시 threadName이 1부터 시작하는 이유

0

177

1

synchronized = 모니터

0

285

2

Thread의 Context Switching 문의드립니다.

1

256

1

동기 & 논블록킹 질문 드립니다.

0

232

2