Thread

천소진·2022년 9월 20일
0

Study

목록 보기
7/29
post-thumbnail

프로세스와 스레드

  • 프로세스
    : 영체제에서 실행중인 하나의 프로그램.
    : 여러개의 스레드가 모여있는 집합체
  • 스레드
    : 프로세스 내에서 실제로 작업을 수행하는 세부 작업 단위.
    : 모든 프로세스는 한개 이상의 스레드가 존재하며, 두개 이사아의 스레드를 가지는 것을 멀티스레드 프로레스라고 함.

스레드의 상태
1. new : 스레드가 생성된 상태 ( Thread th= new Thread();)
2. Runnable: 실행 가능한 상태로 start()를 호출한 후
3. Running : 실제로 스레드가 동작하고 있는 상태. run()수행중
4. Blocked : 스레드가 특정 이유로 잠시 멈춘 상태.Blocking 요청이 종료될때 까지 계속 수행됨.
5. Dead : Run()수행이 끝난상태.

스레드의 생성과 실행

Thread 주요 생성자

  • Thread() : 가장 일반적인 형태.
  • Thread(Runnable target) : Runnable 객체로 Thread 객체생성.
  • Thread(Runnable targer, Runnable String name) : Runnable객체를 이용해서 생성하며 스레드의 이름을 지정할 수 있음.
  • Thread(String name): 스레드 이름을 지정하여 Thread 객체 생성.

Thread 주요 메소드
1. sleep(long mills) : mills에 지정된 시간만큼 대기(1000이 1초)
2. getName() : 스레드의 이름 반환(String)
3. setName() : 스레드의 이름 지정 (void)
4. start() : 스레드 시작 (void)
5. getPriority() : 스레드의 우선순위 반환(int)
6. setPriority() : 스레드의 우선순위 지정(void)
7. join() : join()을 호출한 스레드가 종료할때까지 기다림(void) 스레드 실행 순서 제어
8. yeild() : 우선순위가 같은 다른스레드에게 제어권을 넘김(static void)
9. currentThread() : 현재 수행되는 스레드 객체 반환(static Thread)

스레드 생성 방법

  • Thread클래스 상속
public class Create_th extends Thread{
	public void run(){ }

public static void main(String []args){
Create_th th= new Create_th();     // Thread th= new Create_th();

th.start():
	}
}
  • Runnable()을 이용하여 생성
public class Create_run implements Runnable{
	public void run(){ }
    
public static void(String []args){
	Create_run r = new Create_run();
    Thread th = new Thread(r);
    th.start();
    }
}

스레드 스케줄링

  • 선점형 : 우선순위가 높은 스레드 먼저실행.
  • 협력형 : 먼저 실행중인 스레드가 CPU 사용권을 다른 스레드에게 넘길 때 까지 기다림.

우선순위

: setPriority(1~10) 메소드를 통해 우선순위를 정할 수 있고, getPriority()메소드로 현재스레드의 우선순위를 조회할 수 있음.
: 숫자가 커질수록 우선순위가 높음.
: 순서를 정해주는것보단 스레드의 수행 빈도수를 높여주는 개념.

Synchronized= 동기화

  • 임계영역: 서로 다른 스레드에 의해 공유자원이 참조될 수 있는 코드의 범위.
  • 동기화 : 하나의 스레드가 조작하고 있는 공유자원을 다른 스레드에서 조작하지 못하게 하기 위한 방법.
  • 다수의 스레드가 공유데이터에 대한 동시적접근(경쟁상태)가 발생하면 잘못된 상태(DeadLock)에 빠질수 있음.

메소드 전체를 임계영역으로 지정
: 메소드 선언시 동기화 키워드를 정의하여, 메소드가 호출되면 메소드를 가지고 있는 객체에 락 (lock)을 걸어 작업을 수행하다가 메소드가 종료되면 반납.

특정영역만 임계영역으로 지정 Interrupted
: 성능의 효율성을 위해 가능하면 전체에 락(lock)을 거는 것보다는 최소화하여적 적용하는것이 효율적.

운영체제

  • 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종

  • 하드웨어, 소프트웨어 양쪽다 관리 및 운영.

  • 종류
    pc= Window, Linux, Solris,Bada,Unix...
    모바일 = 안드로이드, ios

  • 역할

  1. 자원관리
  2. 하드웨어, 소프트웨어 운영

버퍼 : 속도 차이나는 두 장치사이에 그 차이를 완화시키기 위해 사용하는 메모리
데이터가 전송되는 동안 머무는 임시저장소.

스풀 (Spool): CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트 웨어 버퍼
CPU의 명령을 저장해서 주변 장치에 전달해줌.

캐시 : 메모리와 CPU간의 속도 차이를 완화하기 위해 데이터를 미리미리 저장해 두는 임시 메모리

0개의 댓글