열심히 끝까지
42강 스레드1 본문
42-1 ) 스레드의 정의
스레드란?
: 하나의 프로세스 안에서 두 가지 이상의 일을 하도록 하는 것
<용어 정리>
- 프로세스(Process) : 실행중인 프로그램
- 스래드(Thread) : 프로세스에서 작업을 수행하는 것
- 멀티 스레드 프로세스(Multi-Thread Process)
: 두 가지 이상의 작업을 하는 프로세스
[프로세스가 실행되는 방식]
1. 시간 분할 방식
: 모든 프로세스에게 동일한 시간을 할당하고 골고루 실행되는 방식
2. 선점형 방식
: 각각의 프로세스에게 우선 순위를 부여하고
우선순위가 높은 순으로 실행되는 방식
42-2 ) 스레드의 생성
[JVM이 스레드 처리 시 하는 일] => 스레드 스케줄링
- 스레드가 몇 개 존재하는지
- 스레드가 실행되는 프로그램 코드의 메모리 위치가 어디인지
- 현재 스레드의 상태는 무엇인지
- 스레드의 우선순위는 몇 인지
[개발자가 스레드 처리 시 하는 일]
- 자바 스레드로 작동할 작업이 무엇인지 코드로 작성
- 스레드 코드가 실행할 수 있도록 JVM한테 요청
1. 스레드 작업 코드 작성 방법
1) Thread 클래스 상속
2) Runnable 인터페이스 구현
----------------------------------------------------------------------
1) Thread 클래스 상속
class T1 extends Thread{
public void run(){ // run() 메서드 오버라이딩(재정의)
// run 메서드를 만들지 않아도 오류가 나진 않음
// 작업할 내용
}
}
2) Runnable 인터페이스 구현
class T2 implements Runnable{
public void run(){ // run 메서드 오버라이딩
// 인터페이스이기에 무조건 정의내려야 함
// 작업할 내용
}
}
2. 스레드 코드 실행하도록 JVM 요청
1) Thread 클래스를 상속받는 클래스
2) Runnable 인터페이스를 구현한 클래스
----------------------------------------------------------------------
1) Thread 클래스를 상속받는 클래스
Th1 t1 = new Th1(); // 인스턴스 생성
t1.start();
2) Runnable 인터페이스를 구현한 클래스
Th2 t2 = new Th2(); // 인스턴스 생성
Thread t = new Thread(t2);
t.start();
==> * Thread 클래스의 매개변수 생성자에 인자값으로 전달!
<실습>Thread1
Thread 클래스 상속과 Runnable 인터페이스 구현한 스레드를
각각 실행하는 실습
=> 실행결과, 스레드를 호출한 순서에 상관없이
메인함수, 러너블, 스레드가 골고루 실행되고 있다.
<실습>MainThread
Thread 이름 ,상태, 우선순위를 확인하는 메서드 실습
*priority가 정의 되어 있지 않으면 기본값으로 5를 가진다.
'멘토씨리즈 JAVA' 카테고리의 다른 글
44강 스레드3 (0) | 2022.05.10 |
---|---|
43강 스레드2 (0) | 2022.05.10 |
41강 컬렉션 프레임 웍 연습2 / 정렬(sort) (0) | 2022.05.10 |
40강 컬렉션 프레임 웍 연습1 / 고객 관리 프로그램 (0) | 2022.05.09 |
39강 컬렉션 프레임 웍4 / Map (0) | 2022.05.09 |