14.1. 멀티 스레드 개념
- 멀티 프로세스 : 프로그램 단위의 멀티 태스킹
- 멀티 스레드 : 프로그램 내부에서의 멀티 태스킹
- 프로세스 내부에서 생성되기 때문에 영향을 미침
사용처
- 데이터를 분할해서 병렬로 처리하는 곳
- 안드로이드 앱에서 네트워크 통신을 하기 위해 사용
- 서버를 개발할 때 사용
14.2. 메인 스레드 = 코드의 실행 흐름
- 메인 스레드 (main thread) : main() 메소드를 실행하면서 시작된다.
- main() 메소드의 첫 코드부터 순차적으로 실행
- main() 메소드의 마지막 코드를 실행하거나 return문을 만나면 실행을 종료한다.
싱글 스레드 vs 멀티 스레드
- 싱글 스레드 : 메인 스레드가 종료되면 프로세스도 종료된다.
- 멀티 스레드 : 실행 중인 스레드가 하나라도 있다면 프로세스는 종료되지 않는다.
14.3. 작업 스레드 생성과 실행
- 몇 개의 작업을 병렬로 실행할지 결정
- 각 작업별로 스레드 생성
- 자바 프로그램은 메인 스레드가 반드시 존재하기 때문에 메인 작업 이외에 추가적인 작업 수만큼 스레드를 생성하면 된다.
- 자바는 작업 스레드도 객체로 관리하므로 클래스가 필요하다.
- Thread 클래스로 직접 객체를 생성해도 되지만, 하위 클래스를 만들어 생성할 수도 있다.
Thread 클래스로 직접 생성
- Runnable 구현 객체 생성 후 Thread 생성자의 매개값으로 Runnable 객체 전달
class Task implements Runnable{
@Override
public void run() {
}
}
익명 구현 객체로 생성
Thread thread = new Thread (new Runnable() {
@Override
public void run() {
}
});
작업 스레드 호출(실행)
thread.start();