
프로세스 내부에서의 실행 흐름
- 멀티 프로세스: 자신의 메모리를 가지고 실행하므로 서로 독립적
- 멀티 스레드: 하나의 프로세스 내부에 생성되므로 스레드 하나가 예외를 발생시키면 다른 스레드도 영향을 받음
class Task implements Runnable{
public void run() {
스레드가 실행할 코드;
}
}
Runnable task = new Task();
Thread thread = new Thread(task);
start() 메소드 호출해야 실행thread.start();
public class WorkerThread extends Thread {
@Override
public void run() { //run() 메소드 재정의
스레드가 실행할 코드;
}
}
Thread thread = new WorkerThread();
start() 메소드 호출해야 실행thread.start();
메인 스레드는 'main' 이름 가지며, 직접 생성한 스레드는 자동적으로 'Thread-n' 이름 설정됨
thread.setName("스레드 이름");
thread.getName("스레드 이름");
Thread thread = Thread.currentThread();

public synchronized void method(){
임계 영역 // 단 하나의 스레드만 실행
}


- 프로세스: 운영체제로부터 실행에 필요한 메모리를 할당받아 실행하는 애플리케이션
- 멀티 스레드: 하나의 프로세스 내에 동시에 실행하는 스레드가 2개 이상인 경우
-메인 스레드: 자바의 모든 애플리케이션은 메인 스레드가 main() 메소드를 실행- 작업 스레드: 메인 작업 이외에 병렬 작업의 수만큼 생성하는 스레드
- Thread 클래스를 직접 객체화해서 생성할 수 있고
- Thread 클래스를 상속해서 하위 클래스 만들어 생성할 수도 있음
- 동기화 메소드: 한번에 하나의 스레드만 호출할 수 있도록 해주는 메소드


| 메소드 | 설명 |
|---|---|
interrupt() | 일시 정지 상태의 스레드에서 InterruptedException을 발생시켜, 에외 처리 코드(catch)에서 실행 대기 상태로 가거나 종료 상태로 갈 수 있도록 합니다. |
sleep(long millis) | 주어진 시간 동안 스레드를 일시 정지 상태로 만듭니다. 주어진 시간이 지나면 자동적으로 실행 대기 상태가 됩니다. |
stop() | 스레드를 즉시 종료합니다. 불안전한 종료를 유발하므로 사용하지 않는 것이 좋습니다. |
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
//interrupt() 메소드가 호출되면 실행
}
public class XXXThread extend Thread {
private boolean stop;
public void run() {
while(!stop) { //stop이 true가 되면 run()이 종료
스레드가 반복 실행하는 코드;
}
//스레드가 사용한 자원 정리
}
}
interrupt() 메소드 이용하는 방법
interrupt() 메소드 실행한 이후,Interrupted() - 정적 메소드, 현재 스레드가 interrupted 되었는지 확인isInterrupted() - 인스턴스 메소드, 현재 스레드가 interrupted 되었는지 확인setDaemon(true)를 호출해서 설정함start() 하기 전에 데몬 스레드로 설정public static void main(String[] args) {
AutoSaveThread thread = new AutoSaveThread();
thread.setdaemon(true);
thread.start();
...
}
- 스레드 상태: 스레드를 생성하고 시작하면 스레드는 다양한 상태를 가지게 된다.
- 일시 정지:
Thread.sleep()메소드를 호출한 스레드는 주어진 시간 동안 일시정지 상태가 되고 다시 실행 대기 상태로 돌아감- 안전한 종료: 스레드를 안전하게 종료하기 위해 stop 플래그나
interrupt()메소드를 이용할 수 있다.- 데몬 스레드: 주 스레드가 종료되면 자동으로 종료되는 스레드