애플리케이션을 실행하면 실행에 필요한 메모리를 할당받아 애플리케이션이 실행되는데 이것을 프로세스라고 함,
그리고 프로세스 내부에서 코드의 실행 흐름을 스레드라고 함
멀티 프로세스는 독립적, 멀티 스레드는 스레드 하나가 예외를 발생시키면 다른 스레드도 영향을 받음 (ex: 워드와 엑셀을 동시에 사용, 메신저 프로세스에서 파일 전송 스레드에서 예외가 발생하면 메신저 프로세스 자체가 종료되기 때문에 채팅 스레드도 같이 종료됨)
메인 스레드: java의 경우 main 스레드가 main() 메소드를 실행하며 시작
싱글 스레드 app에서는 메인 스레드가 종료될 경우 프로세스도 종료
멀티 스레드 app에서는 실행 중인 스레드가 하나라도 있다면 종료되지 않음
스레드를 직접 객체화해서 생성 or 스레드 클래스를 상속해서 하위 클래스를 만들어 생성
스레드 클래스로부터 직접 생성
// 생성자 호출
Thread thread = new Thread(Runnable target);
// 구현 클래스
class Task implements Runnable {
public void run() {
스레드가 실행할 코드;
}
}
// 작업 스레드 생성
Runnable task = new Task();
Thread thread = new Thread(task);
// 가장 많이 사용되는 방법
Thread thread = new Thread(new Runnable() {
public void run() {
스레드가 실행할 코드;
}
});
// 바로 실행 X, 호출해야함
thread.start();
Thread thread = new Thread() {
public void run() {
스레드가 실행할 코드;
}
};
// 바로 실행 X, 호출해야함
thread.start();
++
정보 감사합니다.