혼공자 4주차

다율·2023년 7월 30일
0

2023 혼공자

목록 보기
4/6

기본 미션

  • 직접 해보는 손코딩 (550p) 코딩 과정 및 실행 캡쳐하기


    실행 결과

멀티 스레드

애플리케이션을 실행하면 실행에 필요한 메모리를 할당받아 애플리케이션이 실행되는데 이것을 프로세스라고 함,
그리고 프로세스 내부에서 코드의 실행 흐름을 스레드라고 함

  • 멀티 프로세스는 독립적, 멀티 스레드는 스레드 하나가 예외를 발생시키면 다른 스레드도 영향을 받음 (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();

++

스레드 제어

  • 스레드 상태
  1. 실행 상태
  2. 종료 상태
  • 실행 중인 스레드의 상태를 변경하는 것을 스레드 상태 제어라고 함
  1. interrupt(): 예외를 발생시켜 실행 대기 상태 or 종료 상태로
  2. sleep(long millis): 주어진 시간동안 스레드를 일시정지로 만듦, 시간이 지나면 자동적으로 실행 대기 상태가 됨
  3. stop(): 스레드를 즉시 종료, 불완전하기 때문에 사용하지 않는 것이 좋음
  • 데몬 스레드: 주 스레드의 작업을 돕는 보조적인 스레드(주 스레드가 종료되면 강제적으로 자동 종료됨)
profile
새싹 개발자 🌱

1개의 댓글

comment-user-thumbnail
2023년 7월 30일

정보 감사합니다.

답글 달기