IT/JAVA

Java Section 18 : 스레드

_KH_ 2025. 1. 25. 23:57

[프로세스와 스레드]

□ 프로세스 : 프로그램의 한 단위. 실행 중인 프로그램으로, 메모리에 독립적으로 저장되어 실행된다.

스레드 : 프로그램 내에서 동작하는 작업 단위를 말하며 스레드를 통해 동시에 여러 가지 작업 가능

 

- 각각의 프로세스들은 메모리에 독립적으로 등록되어 서로 간섭할 수 없음

- 하나의 프로세스 안에서 다양한 작업을 동시에 하기 위해 스레드가 각자 독립적으로 존재하여 일 수행

- 하나의 프로세스는 적어도 한 개의 스레드를 가진다.

Thread 클래스를 상속하여 run() 메서드 구현
Runnable 인터페이스 구현

 

① Thread 클래스 상속

- 클래스에 Thread를 상속받은 경우에는 Thread가 가지고 있는 run() 메서드를 사용해서 생성

 

② Runnable 인터페이스 상속

- 클래스 상속 어려울 시 Runnable 인터페이스 상속하여 구현 (다중 상속 불가능으로 인해)

- Thread 클래스를 사용하는 것이 아니고 Runnable 인터페이스를 구현하는 것

Thread th = new Thread(Runnable을 상속한 인스턴스);

 

-   스레드 클래스를 선언하면서 runnable을 상속한 클래스를 선언하여 매개변수로 넘겨주는 것

- Thread 클래스는 스레드를 실행하는 주체, Runnable 인터페이스를 상속한 클래스는 실행 코드 지닌 객체

- 메인 클래스에서 스레드 선언 시 생성자 매개변수로 실행할 Runnable 클래스 넘겨주어야 함.

 

- 스레드는 다중 실행 가능

 

※ 스레드에 이름 부여하기 

현재 진행 중인 스레드가 어떤 작업인지 알기위해 이름 부여

 

멀티스레드

: 같은 시간에 서로 독립적인 스레드가 일을 처리하는 것 (= 비동기 작업)

 

[스레드 동기화]

: 여러 개의 스레드가 하나의 공유 데이터에 동시에 접근하게 할 수 었도록 하는 기능

 

[임계 영역] : 단 하나의 스레드만 처리할 수 있는 영역

 

[동기화 처리] : 하나의 스레드가 이 영역에 진입할 때 락을 걸어 다른 스레드가 수행되지 못하도록 함

public synchronized void add();

 

" synchronized "  키워드 사용