2023.05.09

Jay Ji·2023년 5월 10일
0

I write TIL I close my Eyes

목록 보기
27/28
post-thumbnail

What is Multithreading?

Java에서 multithreading은 CPU를 최대한 활용하기 위해 둘 이상의 스레드를 동시에 실행하는 프로세스를 의미합니다. Java의 스레드는 프로세스 리소스를 만들고 공유하는데 더 적은 리소스가 필요한 lightweight라고 할 수 있다.

Multithreading과 Multiprocessing은 Java에서 멀티태스킹에 사용되지만, 통상 Multiprocessing보다 Multithreading을 더 선호한다고 합니다. 이유는 스레드가 공유 메모리 영역을 사용하여 메모리 영역을 사용하여 메모리 절약하는데 도움이 되고 스레드 간의 내용 전환이 프로세스보다 조금 더 빠르기 때문입니다.

Multithreading의 장점은:

  • Multithreading은 여러 작업을 함께 수행할 수 있으므로 시간을 절약한다
  • 스레드는 독립적이므로 사용자가 동시에 여러 작업을 수행하는 것을 차단하지 않으며 단일 스레드에서 예외가 발생해도 다른 스레드에 영향을 주지 않는다

Life Cycle of a Thread

스레드의 life cycle에는 5계의 단계가 있으며, JVM(Java Virtual Machine)에 의해 제어가 됩니다.

New -> Runnable -> Running -> Non-Runnable(Blocked) -> Terminated

New

새 스레드가 시작될 때, new thread 혹은 born thread라고 합니다. New Thread는 Thread 클래스에서 인스턴스를 만들고 난 후 생성이 되며, start()메서드를 호출하기 전 상태를 말합니다.

Runnable

새로 생성된 스레드가 시작된 후에 스레드 실행이 가능해집니다. Runnable 상태에서 스레드는 작업을 실행합니다.

Running

Thread scheduler가 스레드를 선택하게 되면, 해당 스레드는 Runnable에서 Running 상태로 변경됩니다.

Non-Runnable(Blocked)

Thread는 Non-Runnable 상태에서 여전히 활성 상태이지만 샐행 할 수는 없는 상태입니다.

Terminated

run() 메서드가 정상적으로 수행이 되거나, 세그먼테이션 오류 또는 처리되지 않은 예외와 같이 비정상적인 오류로 인해 Terminated 상태가 될 수 있습니다.

그 외 sleep(), wait() 등 다양한 메소드가 존재한다.

profile
Think out of the Box

0개의 댓글