MapleStory Cookie With Halo

☕ JAVA/☕ Class & Method

[JAVA][Thread]main쓰레드, join(), I/O Blocking

뉴이 NUEY 2024. 12. 2. 19:57
반응형

 

main쓰레드
: main메서드의 코드를 수행하는 쓰레드.

  • 쓰레드에는 두가지 종류가 있다.
    • 사용자 쓰레드
      → main쓰레드가 여기 속한다.

    • 데몬 쓰레드 (보조 쓰레드)

❗ 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다.

 


 

join()
: 쓰레드 작업이 끝날 때까지 기다려준다.

쓰레드가 끝날 때까지 기다린 후 걸린 시간을 출력한다.
출력결과

 


 

main쓰레드가 끝나도
실행중인 쓰레드가 끝나야 프로그램이 종료된다.

main쓰레드는 소요시간을 출력하고 끝났지만, 쓰레드는 아직도 문자열을 출력하고 있다.

 

💡싱글 쓰레드와의 차이
싱글 쓰레드 코드

순차적으로 출력이 실행되었다.

 

💡Context Switching
멀티 쓰레드에서 작업을 번갈아가면서 진행할 때
A작업 → B작업, B작업 → A작업으로 오고갈 때를 말한다.
이 때문에 싱글 쓰레드보다 멀티 쓰레드는 작업에 시간이 조금 더 걸린다.

 


 

쓰레드의 I/O blocking
: 쓰레드 입출력시 작업중단.

싱글 쓰레드로 작성했을 경우, 입력을 해야만 아래 출력코드가 실행된다.

 

멀티 쓰레드로 작성했을 경우, 입력값이 없어도 쓰레드가 동작한다.시

 

  • 싱글 쓰레드 중에는 I/O Blocking이 발생하면 작업이 중단될 수 있다.

  • 하지만 멀티 쓰레드는 다른 프로세스의 작업중단과 관계없이 진행되므로 오히려 수행시간이 짧을 수 있다.

  • 우리가 카톡을 하면서 사진과 메시지를 동시에 보낼 수 있는 것도 멀티 쓰레드 덕분이다.

 


참조영상

반응형

'☕ JAVA > ☕ Class & Method' 카테고리의 다른 글

[JAVA][Thread]Daemon Thread 데몬 쓰레드  (0) 2024.12.03
[JAVA][Thread]우선순위  (0) 2024.12.02
[JAVA][Thread]구현  (0) 2024.12.02
[JAVA]java.util.function 패키지  (0) 2024.12.01
[JAVA]@Annotation 만들기  (1) 2024.11.29