[Java] 멀티 스레드

Korangii·2024년 8월 1일
0

Java

목록 보기
23/24
post-thumbnail

14.1. 멀티 스레드 개념

  • 멀티 프로세스 : 프로그램 단위의 멀티 태스킹
    • 독립적이므로 영향을 미치지 않음
  • 멀티 스레드 : 프로그램 내부에서의 멀티 태스킹
    • 프로세스 내부에서 생성되기 때문에 영향을 미침

사용처

  • 데이터를 분할해서 병렬로 처리하는 곳
  • 안드로이드 앱에서 네트워크 통신을 하기 위해 사용
  • 서버를 개발할 때 사용

14.2. 메인 스레드 = 코드의 실행 흐름

  • 메인 스레드 (main thread) : main() 메소드를 실행하면서 시작된다.
  • main() 메소드의 첫 코드부터 순차적으로 실행
  • main() 메소드의 마지막 코드를 실행하거나 return문을 만나면 실행을 종료한다.

싱글 스레드 vs 멀티 스레드

  • 싱글 스레드 : 메인 스레드가 종료되면 프로세스도 종료된다.
  • 멀티 스레드 : 실행 중인 스레드가 하나라도 있다면 프로세스는 종료되지 않는다.

14.3. 작업 스레드 생성과 실행

  1. 몇 개의 작업을 병렬로 실행할지 결정
  2. 각 작업별로 스레드 생성
  • 자바 프로그램은 메인 스레드가 반드시 존재하기 때문에 메인 작업 이외에 추가적인 작업 수만큼 스레드를 생성하면 된다.
  • 자바는 작업 스레드도 객체로 관리하므로 클래스가 필요하다.
  • Thread 클래스로 직접 객체를 생성해도 되지만, 하위 클래스를 만들어 생성할 수도 있다.

Thread 클래스로 직접 생성

  • Runnable 구현 객체 생성 후 Thread 생성자의 매개값으로 Runnable 객체 전달
// run() 메소드 정의
class Task implements Runnable{
    @Override
    // run() 재정의
    public void run() { 
        // 스레드가 실행할 코드
    }
}

익명 구현 객체로 생성

  • 더 많이 사용되는 방법
// run() 메소드 정의
Thread thread = new Thread (new Runnable() {
    @Override
    // run() 재정의
    public void run() { 
        // 스레드가 실행할 코드
    }
});

작업 스레드 호출(실행)

thread.start();
profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글