Wanna be Brilliant Full-Stack Developer

자바 스레드 가 무엇인지 알아보자! 본문

Some Memos/Java

자바 스레드 가 무엇인지 알아보자!

Flashpacker 2023. 3. 20. 22:49


번개먼 아저씨가 있다.. 굉장히 빠르다. 눈을 한번 깜빡이는 시간동안에 순간이동이 가능하다.

눈을 한번 깜빡이는 0.01초 시간 단위로 왔다갔다 하면서 순간이동 할 수 있다.

이분이 무엇을 하려하냐면

A 시험장과 B 시험장이 있는데 A는 한국에 있는 B는 미국에 있는 시험장이다.

이 두개의 시험을 동시에 같은시간에 치려고 한다.

두개의 시험을 번개맨아저씨가 같이 동시에 보고 싶어한다.

동시에 보려고 하니까 책상이 있는데 의자가 있는데 거기에 앉아서 시험을 보는데?

시험을 보는데 감독관이 눈으로 보고 있다.

감독관이 눈으로 보고 있으니까 내가 오랫동안 자리를 비울수가 없다

오랫동안 1초라도 자리를 비우면 이 감독관이 보게 된다.

그래서 0.01초 간격으로 이 미국에 있는 시험장과 한국에 있는 시험장을 순간이동 하면서 시험을 칠생각을 한다.

 

시나리오를 보자!

0,01초를 한국시험장에있다가 미국에도 0.01초 있다가 순간이동을 왔다갔다 하면 감독관이 못느끼겠지?

라고 생각을 한다.

그래서 왔다갔다하면서 시험을 치니까 계속 0.1초 간격으로 왔다갔다 반복을 하니까 굉장히 힘들것이다.

그대신 감독관의 눈을 속일 수 있다.

0.01초마다 움직이는것도 힘들지만 시험의 문맥을 파악하는것도 힘들다.

한국에서는 1번을 풀고 있는데 0.01초동안 풀다가 미국에 와서는 2번문제를 0.01초동안 풀다가 다시 와서 1번 풀다가 

1번문제와 2번문제를 왔다갔다 하면서 푸니까 굉장히 혼란스러워 문맥파악이 힘들다.

 

대신 장점이 있다. 감독관의 눈을 피할 수 있다는 것이다.

이것이 핵심이다. 이것이 스레드이다.

여기서 말하는 문맥이라는건 무엇인가? 문맥은 영어로 하면 context라고 하는데!?

context라는 문맥은 전후사정이라고 한다. 전후사정이라는건?

갑자기 카페에 앉아 있는데 친구 둘이서 영희와 철수가 무슨 이야기를 하냐면 

어제봤던 영화 이야기를 하면서 오는것이다.

그래서 걸어와서 이 커피숍에 있는 친구에게 너는 어떻게 생각하는지 질문을 한다?

영화 이야기를 하다가 영희가 질문을 한다. 누구한테하는가?

커피숍에 앉아있는 길동이에게 한다.

 

길동이의 입장에서는 어떨까? 영희와 철수가 영화이야기를 했는지도 모르고 영화 이야기를 어디까지 했는지도 모르고

어떤 영화를 이야기했는지도 모로는데 갑자기 영희가 질문을 하면

길동이의 입장에서는 ? 가 나올것이다.

이유가 무엇인가? 전후사정 즉 문맥을 모르기 떄문이다.

 

만약에 길동이가 영희와 철수를 만나기전에 영희와 철수가 어떤 이야기를 하는지 알고 있었으면 문맥을 알고 있어

대화를 참여 할 수 가 있지만 너는 어떻게 생각해 질문을 할 수 있지만

 

길동이는 ?라고 밖에 대답할 수 없다. 문맥을 모르니까

길동이에게 문맥을 알려주면 대답을 할 수 가 있는데 이런 문맥 파악이 힘들다.

 

그러면 스레드를 정의 해보자!

스레드는? 

눈을 속일 수 있다.

어떻게 하면? 왔다갔다를 굉장히 빠르게 하면 된다.

이게 스레드이다.

그러면 왔다갔다 빠르게 안하고 A에서 다 시험 치르고 끝나면 B에서 치르면 감독관한테 걸린다.

눈에 걸리면 안된다. 

 

즉 스레드라는것은 어떤 하나의 CPU(연산장치)가 두가지 이상의 일을 동시에 하는것! 이걸 스레드라고한다.

애를 머라고 하냐면? 멀티 스레드 라고 한다. 

 

기본적으로 자바는 처음에는 스레드 하나만 들고 있따.

어떤 스레드를 들고 있는가? Main스레드라는것만들고 있다.

그래서 이게 무슨말인지 코드를 통해 알아보자!