inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hiểu đa luồng phụ trợ và phát triển cái nhìn sâu sắc

Chấm dứt một chủ đề một cách duyên dáng

코틀린으로 해당 C# 예제를 비슷하게 만들어봤는데, 제가 잘못 작성한 걸까요?

Đã giải quyết

806

작성자 없음

1

 <상황>지식 공유자님께서 작성해주신 C# 코드 예제를 코틀린으로 비슷하게 작성해서 시도해보았지만 같은 상황이 재현되지 않습니다. <질문 의도>제가 지식 공유자님의 코드를 잘못 이해하고 작성한 것인지, 아니면 JVM의 의도치 않은 최적화 때문에 의도와 다르게 동작하는 것인지 궁금합니다. <작성한 코드>fun main (args: Array<String>) { Example().startUp() } class Example() { private var shouldStop = false fun startUp() { println("process start") val thread = Thread(Runnable { doWork() }) thread.start() Thread.sleep(1000) shouldStop = true thread.join() println("process end") } // shouldStop에 @Volatile을 붙이지 않으면 무한 루프를 돌 것이라고 생각했으나 // graceful shutdown이 잘 되어버림 private fun doWork() { while (!shouldStop) { println("doWork..") Thread.sleep(1000) } } }  좋은 강의 만들어주셔서 감사합니다!

C# mysql kafka redis multithread

Câu trả lời 4

1

euni

뒤늦게 이해했습니다! while문 내에서 Thread.sleep()을 호출하는 바람에 context switching이 발생해서 cache가 flush되어 제가 원하는대로 동작하지 않는 것이었군요.. 저처럼 실수하는 분이 계실 것 같아서 글은 그대로 두겠습니다!! 감사합니다

0

captainmomo

너무 늦게 봤네요 스스로 깨우치시다니 멋지십니다.

0

euni

글이 이상하게 올라갔네요 ㅜ..

 

 <상황>

지식 공유자님께서 작성해주신 C# 코드 예제를 코틀린으로 비슷하게 작성해서 시도해보았지만 같은 상황이 재현되지 않습니다. 

<질문 의도>

제가 지식 공유자님의 코드를 잘못 이해하고 작성한 것인지, 아니면 JVM의 의도치 않은 최적화 때문에 의도와 다르게 동작하는 것인지 궁금합니다. 

 

<코드>

위에 다시 올렸습니다!!

0

euni

fun main (args: Array<String>) {
    Example().startUp()
}

class Example() {
    private var shouldStop = false

    fun startUp() {
        println("process start")

        val thread = Thread(Runnable {
            doWork()
        })

        thread.start()

        Thread.sleep(1000)
        shouldStop = true

        thread.join()

        println("process end")
    }

    private fun doWork() {
        while (!shouldStop) {
            println("doWork..")
            Thread.sleep(1000)
        }
    }
}

강의 관련 질문드립니다.

1

13

2

Redis 비동기 I/O 멀티플렉싱이 아니라 논블로킹 I/O 멀티플렉싱이 아닌가요?

0

7

0

PK를 AUTO_INCREMENT UUID를 UNIQUE로 하는것에 대해

0

16

1

Jib 빌드가 83%에서 멈추는 문제 해결(windows 사용자)

1

18

1

pk를 auto increment로 하는것에 대해서

0

23

1

미션 제출 방식 건의

0

35

0

트랜잭션 내 Redis I/O 에 대한 궁금한점

1

32

1

미션 진행 방식에 대한 질문입니다.

0

51

1

경쟁상태

0

50

1

stmt

0

41

1

파킹 페이지와 대기열 큐 질문입니다.

0

47

1

실행 통계2 explain analyze 조인 쿼리

0

47

1

Kafka 4.0 zk 코드 제거 가이드 요청

0

41

2

안녕하세요 Rookiss님 기본기를 다지고 있는 대학생입니다.

0

90

2

[해결됨]마지막 강의 내용 수정 화면이 기능을 못하네요.

0

49

1

[해결됨]부분적으로 화면 이동이 안되는 부분이 있습니다.

0

85

6

68강 문제 풀이

0

43

1

현대 쿼리 복잡성에 관한 질문

0

90

3

언리얼 엔진 5.8의 Claude MCP와 강의에서 설명하는 MCP 연결 방식의 차이점은 무엇인가요?

0

52

1

어떻게 상호배제가 이루어지는지 잘 이해가 안갑니다

1

508

2

임계영역에 2개 이상의 스레드가 올 수 있는지요?

0

469

2

1_Process와 Thread protobuf 부분 질문

0

356

1

혹시 학습한 내용을 블로그에 정리해도 될까요?

1

511

1

캐시 플러시 관련 궁굼한게 있어서 질문 드립니다!!

1

770

2