JAVA

자바 스레드(Thread), 스레드 우선순위

로픽 2016. 7. 5. 20:14
300x250

스레드(Thread) - 시작점과 종료점을 가지는 하나의 작업 흐름


메인메소드 또한 하나의 스레드이다


public static void main(String[] args){         //메인 스레드의 시작


// 내용부 -> 작업흐름


}    //메인 스레드의 종료


** 지금까지 스레드 프로그램을 한것이다


Ex) 하나의 파일이 다운로드 -> 진행 -> 종료 (이런 흐름이 스레드이다)


** 만일 여러개의 파일 다운로드를 진행한다면 멀티스레드(시분할 개념의 작동 방식 근거)



*** 시분할 개념 - 시간을 나누어 복수의 일을 처리하는 것(한번의 처리하는 것처럼 보인다)



스레드 클래스 생성

-java.lang.Thread

-java.lang.Runnable (Thread클래스와 같이 사용한다 - Thread를 진행할 수 있는 매소드가 포함되어있지 않기 때문이다)



위의 실행결과처럼 Runnable인터페이스를 구현한 A1은 메인메소드의 for문과 번갈아 가면서 실행되어진다.



.

*** 스레드 상속 작성 방법  ***


1. 스레드를 상속받는 클래스를 작성한다

2. run() 메소드를 오버라이딩하여 내용부를 구현한다

3. main()메소드 내부에서 스레드를 상속받은 클래스 객체 생성

4. 해당객체 start()메소드를 호출한다



Thread를 상속 받은 클래스를 이용하여 작성한 방법



*** 스레드의 우선순위 값 확인 ***


- CPU의 시분할 개념을 이용하여 여러 개의 작은 프로그램들이 번갈아 가면서 실행할 수 있기 때문에 어떤 것을 우선적으로 실행시켜야 하는지 혹은 어떤 프로그램을 다른 것보다 좀더 오래 실행시켜야 하는지에 대한 정의가 필요

- 이것을 숫자로 표현, 범위는 1~10인데 가장 높은 우선 순위는 10이다

- 디폴트 우선순위 값은 5이다



보통 우선순위는 1부터인데 신기하게 10부터 우선순위가 시작된다.



*** Runnable과 스레드를 구현한 클래스(우선순위) ***


- 우선순위를 적용하여 구현할 수 있다.



우선순위를 부여하였다고 항상 우선순위가 높은 것 먼저 실행되지 않는다(저는 처음에 A4가 먼저 나왔어요)


우선순위는 스케줄러의 선택빈도를 높여줄 뿐이다.

반응형

'JAVA' 카테고리의 다른 글

JAVA 예외 처리 방법2  (0) 2016.07.07
JAVA 예외와 예외처리방법1  (0) 2016.07.06
JAVA - 추상 클래스(Abstract Class)  (2) 2016.06.06
자바(JAVA) - this()  (0) 2016.05.22
자바 - 버블정렬(Bubble Sort)  (0) 2016.05.22