본문 바로가기

콩's EDUCATION/콩's JAVA

[KITRI] 자바 12장 : 멀티 스레드(Thread)

12장. 멀티 스레드 (Multi Thread)


 

TIP: 자바 서블릿/jsp ==> "웹" ==> 기본 멀티스레드 방식 동작 실행 구조

 

* 기본 정의

 

프로그램   ; CPU 실행 가능한 이진코드 집합체(*.class)

프로세스   ; 현재 cpu 실행중인 프로그램

프로세스 구성 ; 데이터 메모리 공간+작업(스레드)

탐색기 ; 파일/폴더 목록 + 목록 출력 스레드 + 파일 오픈 스레드

프로세스 실행방법

스레드 ; 프로세스 구성 작은 작업 단위들

싱글스레드(Single Thread) ;  한번에 한개의 스레드 실행 구조

프로세스 = 데이터 메모리 공간+ 스레드

멀티스레드(Multi Thread) ; 한번에 여러개 스레드 동시 실행 구조

프로세스 = 데이터 메모리 공간+ A스레드 + B스레드.....

 

* java.lang.Object 클래스

 

- 메소드 ;  wait()/notify()/notifyAll()

- 동기화

- synchronized 키워드

 

웹 서버 ; 강사 pc 업로드 1개

멀티스레드 실행 -----↓

웹 클라이언트 ; 브라우저 ; 주소; 다운로드

 

* java.lang.Thread 클래스

 

- Thread 클래스 상속

 

class A extends Thread{

public void run(){

overriding 의무적

}

+ 추가 변수 생성 메소드 정의

}

 

- 멀티스레드 객체 생성

A a1 = new A()

Thread t1 =new A()

 

- 멀티스레드 동작 메소드 호출

a1.start() ==> run 동작

 

run 오버라이딩 구현, start 호출

 

* java.lang.Runnable 인터페이스

 

- 다중상속

이미 상위클래스 존재하는 상태에서 멀티스레드 동작 클래스

 

- Runnable 상속

 

class B extens C implements Runnable {

public void run(){

인터페이스 메소드는 public을 붙인다.

run 반드시 오버라이딩 한다.

}

}

 

- 멀티 스레드 객체 생성

B b1 = new B(); // Runnable 타입 객체

Thread tb = new Thread(b1);

 

- 멀티 스레드 동작 메소드 호출

tb.start() ==> run 시작 역할

 

- Thread/Runnable 상황 선택

다중상속

코딩 번거롭다

 

- Servlet 클래스 웹 호출, 멀티 스레드

 

Class C extends javax.servlet.http.HttpServlet{

}
Class D extends Exception{

}

 

 

==> 이때는 Runnable을 사용한다.

 

* sleep 메소드

 ; 시간동안 스레드 중단된 사이에 대기 스레드중 스레드 스케줄러 선택 스레드실행

 

* join 메소드 ; 특정 스레드 먼저 실행, 특정 스레드run 메소드 수행 결과

 

* wait 메소드 ; synchronized(순서)영역 스레드

 

* synchronized(순서) 동기화 영역 내부에서만 사용

 

 

ch12.zip