Java Server Pages

스레드, 제네릭

나주나주 2024. 1. 4. 16:32

하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않지만, 멀티 스레드는 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있다

 

프로세스 process

: 운영체제에서 실행 중인 하나의 애플리케이션, 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행

 

멀티 태스킹 multi tasking

JVM은 프로세스마다 자원을 적절히 할당하고 병렬로 실행시킨다

 

멀티 스레드의 활용

  1. 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할, 병렬 처리  (ex) 토렌트, 파일 서버
  2. UI를 가지고 있는 애플리케이션 네트워크 통신  (ex) 카톡, 네이트온
  3. 다수 클라이언트 요청을 처리하는 서버 (ex) 웹 구현, 쇼핑몰, 좌석 예약

 

메인 스레드

: 모든 자바 애플리케이션은 메인 스레드가 main()을 실행하면서 시작 된다!

메인 스레드가 작업 스레드를 선언(생성), 병렬적으로 코드를 실행 한다

 

작업 스레드

: 멀티 스레드로 실행하는 애플리케이션을 개발하려면 먼저 몇 개의 작업을 병렬로 실행할 지 결정하고 작업별로 스레드를 생성해야 한다. 프로그램에서 병렬로 실행할 작업을 결정

(ex) 메인 - 프로그램 시작, 작업1 - 네트워킹 및 소리 출력, 작업2 - 드로잉 및 자막 표시

 

Java.lang.Thread클래스의 주요 메서드

sleep() ms, ns만큼 스레드 대기 (예외 처리 필요)
start() 스레드 시작
wait() 다른 스레드가 Object 객체에 대한 notify() 메서드 등을 사용해 호출할 때까지 스레드 대기
notify() (뜻: 알리다) 객체의 모니터에 대기하고 있는 단일 스레드를 깨운다
notifyAll() 객체의 모니터에 대기하고 있는 멀티 스레드를 깨운다

 

방법1

자바에서는 작업 스레드도 객체로 생성되기 때문에  클래스가 필요하다

java.lang.Thread 클래스를 직접 객체화해서 생성

(ex) Thread th = new Thread(Runnable target) //Runnable을 매개값으로 갖는 생성자 호출

  • Runnable

        : 인터페이스 타입이기 떄문에 구현 객체를 만들어 대입, 구현 클래스는 추상 메서드 run()을 재정의하여 실행할 코드             를 작성해야 한다. 작업 스레드는 생성 즉시 실행되는 것이 아니라, start() 메서드를 사용해야 한다

      

방법2

Thread를 상송하여 하위 클래스를 만들어 생성

Runnable을 만들지 않고 extends Thread  

 

 

제네릭 generic (포괄적인)

잘못된 타입이 사용 될 수 있는 문제를 컴파일 과정에서 제거

<T> Type Parameter
<E> Element
<K> Key
<V> Value
<N> Number

 

 

 

 

 

 

 

'Java Server Pages' 카테고리의 다른 글

JSP 클라이언트 에러 암기  (0) 2024.01.31
Servlet  (0) 2024.01.30
JDBC를 이용하는 프로그램 작성  (0) 2024.01.16
Java Data Base Connectivity  (0) 2024.01.15
컬렉션 프레임워크  (1) 2024.01.04